2016-04-26 4 views
0

У меня есть метод, который получает объект ComboBox и запрос, который будет загружен на его элементы.Программно выберите элемент в combobox, используя его свойство ValueMember

Способ также запрашивает 2 других элементов:

имени столбца 1. DB таблицами и устанавливает его в Combobox «ы DisplayMember собственности

2.The идентификатора каждой записи в соответствии с этой колонкой таблицы БД имя и устанавливает его в Combobox «s ValueMember собственности

public void DatabaseColumnRecordsToCombobox(ComboBox cbx, String query, String displayMember, String valueMember) 
{ 
    try 
    { 
     cmd = new MySqlCommand(query, connection); 
     da = new MySqlDataAdapter(cmd); 
     tbl = new DataTable(); 
     da.Fill(tbl); 
     cbx.DataSource = tbl; 
     cbx.DisplayMember = displayMember; 
     cbx.ValueMember = valueMember; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
    finally 
    { 
     this.CloseConnection(); 
    } 
} 

Я использую метод, создав запрос с 2 колонками, Ид и его соответствующим именем. И хранить его в ComboBox «s DisplayMember и ValueMember:

DatabaseColumnRecordsToCombobox(cmbSupplier, "SELECT Id, Supplier_Name FROM Supplier WHERE Enable_Flag=1 ORDER BY Supplier_Name", "Supplier_Name", "Id"); 

Извиняюсь за длинное вступление, я просто хочу, чтобы вы все, чтобы понять, как моя программа работает, прежде чем говорить моя проблема. Таким образом, проблема заключается в том, как выбрать элемент по умолчанию DataGridView, используя ComboBox 's ValueMember?

Все, что я знаю при программном выборе элемента, - cmbCategory.SelectedItem = "Supplier A", но мне нужно выбрать, используя ValueMember. Таким образом, я могу установить элемент по умолчанию по идентификатору.

ответ

1

Просто используйте SelectedValue вместо:

comboBox1.SelectedValue = "2"; 

Очень простой пример, чтобы показать, что я имею в виду:

 DataTable dt = new DataTable(); 
     dt.Clear(); 
     dt.Columns.Add("Id"); 
     dt.Columns.Add("Supplier_Name"); 
     DataRow r = dt.NewRow(); 
     r["Id"] = "1"; 
     r["Supplier_Name"] = "Supplier A"; 
     dt.Rows.Add(r); 
     r = dt.NewRow(); 
     r["Id"] = "2"; 
     r["Supplier_Name"] = "Supplier B"; 
     dt.Rows.Add(r); 
     r = dt.NewRow(); 
     r["Id"] = "3"; 
     r["Supplier_Name"] = "Supplier C"; 
     dt.Rows.Add(r); 

     comboBox1.DataSource = dt; 
     comboBox1.DisplayMember = "Supplier_Name"; 
     comboBox1.ValueMember = "Id"; 

     //This will set the ComboBox to "Supplier B" 
     comboBox1.SelectedValue = "2"; 
+0

Это сработало! Большое спасибо! Но просто хочу знать, можно ли использовать целое число для combobox1.SelectedValue? например 'comboBox1.SelectedValue = 1'. Я использовал целое число, и он все еще работал, просто не знаю, почему все прошло хорошо. Кстати, я люблю тебя, мужчина! #nohomo –

+1

Ха-ха без проблем человек! Целое число должно работать так же, как и его тип объекта. Вы должны быть в состоянии использовать тот же тип, что и тип, который у вас есть в вашем ValueMember. – MrApnea