2016-03-26 1 views
0

Lorsque je sélectionne l'élément de la zone de liste déroulante 1, les éléments de la zone de liste déroulante 2 s'affichent.Afficher uniquement les valeurs mises à jour dans la zone de liste déroulante après une autre sélection de zone de liste modifiable

Et lorsque je sélectionne un autre élément de zone de liste déroulante 1, il montre à la fois les éléments de résultat précédent et nouveau résultat dans zone de liste déroulante 2

Je veux juste montrer que les nouveaux éléments dans zone de liste déroulante 2. Comme je sélectionne les éléments de la combo box 1 Combo box 2 doivent être mis à jour et supprimer les éléments précédents.

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

Steve ce que je suis absent? –

Répondre

0

Vous devez supprimer l'élément à l'index sélectionné de la collection Items de la première liste déroulante.

Notez que j'ai aussi changé votre code pour utiliser la déclaration correcte à l'aide autour des objets à usage unique et un paramètre au lieu de votre concaténation de chaîne très dangereuse

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

obtenir une erreur sur sqlconnection.open qu'il n'existe pas dans le contexte actuel !! –

+0

obtenir erreur sur sqlcmd2.parameters qu'il n'existe pas dans le contexte actuel –

+1

Désolé mon erreur, en supprimant les points-virgules à la fin de l'utilisation – Steve