2016-03-26 5 views
0

Когда я выбираю элемент из поля со списком 1, он отображает элементы в поле со списком два.показывают только обновленные значения в поле со списком после выбора другого поля со списком

И когда я выбираю другой пункт из выпадающего списка 1, что показывает как пункты предыдущего результата и новый результат в поле со списком 2

Я просто хочу, чтобы показать только новые элементы в комбинированном окне 2. Как я выбрать элементы из поля со списком 1 Combo box 2 должны обновляться и удалять предыдущие элементы.

private void cb_oname_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    SqlConnection sqlConnection = new SqlConnection(@"Data Source=.;Initial Catalog=Pizza Mania;Integrated Security=True"); 
    { 
     SqlCommand sqlCmd2 = new SqlCommand("SELECT Product_category FROM Product2 where Product_Name='"+cb_oname.SelectedItem+"'", sqlConnection); 
     { 
      sqlConnection.Open(); 

      SqlDataReader sqlrdr = sqlCmd2.ExecuteReader(); 

      while (sqlrdr.Read()) 
      { 
       cb_ocat.Items.add(sqlrdr["Product_category"].ToString()); 
       cb_ocat.Update(); 
      } 

      sqlConnection.Close(); 
     } 
    } 
} 
+0

Стиву, что я не хватает? –

ответ

0

Вы должны удалить элемент в выбранном индексе из коллекции предметов первой комбо.

Обратите внимание, что я также изменил код, чтобы использовать правильный, используя заявление вокруг одноразовых предметов и параметр вместо вашей очень опасной конкатенации

private void cb_oname_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    // Safety check, SelectedIndexChanged is called also when there is 
    // no item selected (see later) 
    if(cb_oname.SelectedIndex < 0) 
     return; 

    using(SqlConnection sqlConnection = new SqlConnection(.....)) 
    using(SqlCommand sqlCmd2 = new SqlCommand(@"SELECT Product_category 
        FROM Product2 WHERE [email protected]", sqlConnection)) 
    { 
     sqlConnection.Open(); 
     sqlCmd2.Parameters.Add("@name", SqlDbType.NVarChar).Value = cb_oname.SelectedItem; 

     using(SqlDataReader sqlrdr = sqlCmd2.ExecuteReader()) 
     { 
      // Clear the previous items list 
      cb_ocat.Items.Clear(); 
      while (sqlrdr.Read()) 
       cb_ocat.Items.Add(sqlrdr["Product_category"].ToString()); 
     } 
    } 
    // Remove from the Items collection, but it is not enough 
    cb_oname.Items.RemoveAt(cb_oname.SelectedIndex); 
    // Set the selectedindex to -1 so the current text in the combo is reset   
    cb_oname.SelectedIndex = -1; 
} 
+0

получить ошибку на sqlconnection.open, что она не существует в текущем контексте! –

+0

получение ошибки на sqlcmd2.parameters, что она не существует в текущем контексте –

+1

Извините, моя ошибка, удалив точки с запятой в конце использования – Steve

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

  • Нет связанных вопросов^_^