2013-08-01 3 views
1

Я обычно делаю веб-материал, поэтому прошу прощения за незнание темы.Самый элегантный способ установить ComboBox по значению

Я пытаюсь сделать Нагрузку выпадающим из, как это коды:

 using (var con = new SqlConnection(ConStr)) { 
     try { 
      var dt = new DataTable(); 
      var cmd = new SqlCommand("usp_SelectContactDropDown", con) {       
      CommandType = CommandType.StoredProcedure };          

       var adapter = new SqlDataAdapter {SelectCommand = cmd}; 
       adapter.Fill(dt); 
       ((ComboBox) Controls.Find(ddContact, true)[0]).DataSource = dt; 
       ((ComboBox) Controls.Find(ddContact, true)[0]).DisplayMember = "DisplayText"; 
       ((ComboBox) Controls.Find(ddContact, true)[0]).ValueMember = "ID"; 
       ((ComboBox) Controls.Find(ddContact, true)[0]).SelectedIndex = -1; 
      } 
      catch (Exception ex) { MessageBox.Show(ex.ToString()); } 
      finally { /* Handle the error*/ } 

Где ID является Int. После этого я хочу установить выбранное значение поля со списком на основе элемента значения. Однако это кажется более сложным, чем я думаю, что это должно быть. В жереха это довольно просто

 ddContact.SelectedValue = o.fk_ContactID.ToString(); 

Я проверил некоторые другие вопросы (Q1, Q2), которые, как представляется, в виду установить значение элементом отображения. Какой самый элегантный способ сделать это? Заранее спасибо.

+0

Почему вы используете управления .Найти? прямой синтаксис (если в том же классе) работает – Steve

+1

Просто не используйте 'ToString()'. В отличие от ASP.NET, который использует строки, WinForms использует чувствительное к типу сравнение. –

+0

@Steve, если быть честным, он сказал, что он не знает о теме - и поэтому ваш комментарий довольно спорный :) –

ответ

2

Вы говорите WinForms, так, если комбо не в другом классе, это должно работать

ddContact.DisplayMember = "DisplayText"; 
ddContact.ValueMember = "ID"; 
ddContact.DataSource = dt; 
ddContact.Value = Convert.ToInt32(dt.Rows[0]["ID"]); 

Кроме того, я предполагаю, что вы нашли по крайней мере одну запись из вашего запроса

+0

спасибо за разъяснение, что –

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