2013-06-23 4 views
0

Позвольте мне предисловие к этому, сказав, что я не очень много работаю с winforms, так что помилуй мое невежество. Связывание немного странно, исходя из ASP.Программно связать ComboBox (ы) по управляющему имени

Я пытаюсь перебрать ряд комбинированных ящиков и связать их с помощью словаря имен управления и соответствующей хранимой процедуры. Вот упрощенный пример того, что я пытаюсь сделать.

public Dictionary<string, string> GetDropDownSchema() 
    { 
     return new Dictionary<string, string> { {"ddClient", "guisp_SelectClientDropDown"}, {"ddType", "guisp_SelectTypeDropDown"}, {"ddCounty", "guisp_SelectCountyDropDown"}}; 
    } 

    public void BindComboBoxes() 
    { 
     var ddSchem = GetDropDownSchema(); 
     foreach (var dd in ddSchem) { 
      var dt = new DataTable(); 
      using (var con = new SqlConnection(ConStr)) { 
       try { 
        var adapter = new SqlDataAdapter(dd.Value, con); 
        adapter.Fill(dt); 

        ((ComboBox)Controls.Find(dd.Key, true)[0]).DataSource = dt; 
        ((ComboBox)Controls.Find(dd.Key, true)[0]).DisplayMember = "DisplayText"; 
        ((ComboBox)Controls.Find(dd.Key, true)[0]).ValueMember = "ID"; 

       } 
       catch //(Exception ex) 
       { 
        //Code is not throwing any exception, just doesn't work 
       } 

      } 
     } 

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

Благодаря

+0

@Steve Жаль, что была опечатка, как я пытался упростить код для вопроса –

ответ

1

Я полагаю, что guisp_XXXXXX имена хранимых процедур. Если это так, вы не можете использовать их таким образом, чтобы заполнить данные, используя SqlDataAdapter.

Вместо этого вам нужно создать SqlCommand, указать, что его CommandType является StoredProcedure и назначить эту команду на SelectCommand свойство SqlDataAdapter

using (var con = new SqlConnection(ConStr)) 
{ 
    try 
    { 
     con.Open(); 
     var adapter = new SqlDataAdapter(); 
     var cmd = new SqlCommand(dd.Value, con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     adapter.SelectCommand = cmd; 
     adapter.Fill(dt); 
     ...... 
+0

О, вау ... такая глупая ошибка lol, я не очень часто использую SqlDataAdapter. Спасибо за вашу помощь. –