2013-07-04 4 views
3

У меня есть поле со списком в моей форме C#. Я даю ему источник данные, как, чтоКак получить значение combobox из его индекса?

string selectSql = "SELECT ID, NAME FROM MUSTERI"; 

SqlCommand comm = new SqlCommand(selectSql, conn); 
SqlDataReader dr = comm.ExecuteReader(); 
DataTable dt = new DataTable(); 

dt.Columns.Add("ID", typeof(string)); 
dt.Columns.Add("NAME", typeof(string)); 
dt.Load(dr); 

combobox.ValueMember = "ID"; 
combobox.DisplayMember = "AD"; 
combobox.DataSource = dt; 

я могу получить элемент значения (ID, который пришел из базы данных) с использованием Combobox.SelectedValue и элемента текста (NAME, который пришел из базы данных) с использованием Combobox.SelectedText, но мне нужно получить значение к. предметы (для exapmle: значение 4-го элемента). Как я могу это получить?

ответ

4

Вы можете использовать собственность Items.

DataRowView itemAtFourthIndex = combobox.Items[4] as DataRowView; 

int id = -1; 
if(itemAtFourthIndex != null) 
    id = Convert.ToInt32(itemAtFourthIndex.Row["ID"]); 
+0

Я ищу около 2 часов ... Спасибо –

+0

Добро пожаловать :) – keyboardP

1

Я предполагаю, что внутри, ComboBox использует отражение, чтобы получить текст для элемента. Это также должно работать, если вы не используете DataTable в качестве источника данных:

Private Function GetText(cb As ComboBox, i As Integer) As String 
    Dim src = cb.Items(i) 
    Dim txt As String 
    Try 
     txt = src.GetType.GetProperty(cb.DisplayMember).GetValue(src) 
    Catch ex As Exception 
     txt = ex.Message 
    End Try 
    Return txt 
End Function 
0

Может быть, вы можете попробовать следующее:

combobox.SelectedIndex = k; 

, которые могут быть использованы для получения или установить индекс, определяющий в настоящее время выбранный элемент. Более того, чтобы отменить выбор текущего выбранного элемента, установите значение SelectedIndex равным -1.

Иногда этот метод может быть использован для поиска элемента с помощью указывающего, FindString, и есть пример из MSDN:

private void findButton_Click(object sender, System.EventArgs e) { 
    int index = comboBox1.FindString(textBox2.Text); 
    comboBox1.SelectedIndex = index; 
} 

Надежда на помощь.

Смежные вопросы