0

Итак, у меня есть два комбинированных блока. Одно Существо Производство другой модели. Мой запрос sql выглядит так: «Выберите отличительную модель из листа1 где (Производство = @ Производство)», это работает, когда я выполняю ее, и если я должен заполнить таблицу данных. Но если я попытаюсь поместить это в combobox, я получаю System.data.d ...... и т. Д. Для моих выборов. Как я могу просто показать это значения вместо всего этого. Что я делаю не так?Как связать источник данных с ComboBox?

private void ManuComboBox_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     string manu = comboBox3.Text; 
     string conStr = "Data Source=CA-INVDEV\\RISEDB01;Initial Catalog=RISEDB01; Integrated Security=True"; 
     string sqlcmd = "SELECT DISTINCT Model FROM Sheet1 WHERE (Manufacture [email protected])"; 
     using (SqlConnection conn = new SqlConnection(conStr)) 
     { 

      SqlCommand cmd = new SqlCommand(sqlcmd, conn); 

      cmd.Parameters.AddWithValue("@Manufacture", manu); 

      SqlDataReader dr = cmd.ExecuteReader(); 
      if (dr.HasRows) 
      { 
       dr.Close(); 
       SqlDataAdapter dataAdapter = new SqlDataAdapter(cmd); 
       SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);      
       DataTable table = new DataTable(); 
       table.Locale = System.Globalization.CultureInfo.InvariantCulture; 
       dataAdapter.Fill(table); 
       bindingSource3.DataSource = table;     
       ModelComboBox.DataSource = bindingSource3; 

      } 
     } 
    } 
+0

вы пытались установить [ 'DisplayMember'] (http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.displaymember.aspx)? – Sayse

+0

У меня нет. Попробуй это. –

+0

Мне не повезло. Как бы вы порекомендовали меня подойти? –

ответ

2

Можете ли вы дать это попробовать?

 using (SqlConnection conn = new SqlConnection(conStr)) 
     { 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand(sqlcmd, conn); 

      cmd.Parameters.AddWithValue("@Manufacture", manu); 

      SqlDataReader dr = cmd.ExecuteReader(); 

      IList<string> modelList = new List<string>() 
      while (dr.Read()) 
      { 
       modelList.add(dr[0].ToString()); 
      } 

      ModelComboBox.DataSource = modelList; 
     } 
+0

Также я заметил, что переменная «manu» нигде не назначена – sean717

+0

собирается попробовать это сейчас –

+0

работал !. Ты да босс! Узнал что-то новое сегодня Спасибо вам :) –

0

Если установлен элемент дисплея, как:

ModelComboBox.DataSource = bindingSource3; 
ModelComboBox.DisplayMember = "ColumnName"; 

И это все еще показывает смешные значения, каковы ценности, которые она показывает именно?

  • Обратите внимание, в ToolStrip это выглядит, как вы, возможно, придется также сделать:

    ModelComboBox.BindingContext = this.BindingContext;

here is a reference

0

Попробуйте добавить

ComboBox1.ItemsSource = bindingSource3 

если это ваш ответ, то пометить его как ответ

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