2010-07-19 4 views
0

i ont ce code pour le remplissage combo-boxduplicité combo-box lors du remplissage

SQL = "SELECT DISTINCT Name,Num FROM MyTbl order by Name"; 
      adp = new OracleDataAdapter(SQL, Conn); 
      adp.Fill(dsNa, "MyTbl"); 
      adp.Dispose(); 
      comFna.DataSource = dsNa.Tables[0]; 
      comFna.DisplayMember = dsNa.Tables[0].Columns[0].ColumnName; 
      comFna.ValueMember = dsNa.Tables[0].Columns[1].ColumnName; 

mais après l'insertion nouveau nom - je ne vois pas l'ourlet

et après je lance à nouveau ce code - i voir les dossiers de duplicité (uniquement dans la liste déroulante)

comment résoudre ce problème? (Je travaille sur C# WinForms)

remercient à l'avance

Répondre

1

lorsque vous ajoutez un nouveau nom à la base de données que vous avez deux choix: 1) créer un nouvel élément avec le nom donné (et la valeur num) et l'insérer dans combobox collection d'objets. 2) charger à nouveau la liste à partir de la base de données (que vous utilisez)

Le seul problème est que vous devez effacer les éléments de la liste déroulante ou définir sa source de données sur NULL avant de la relier de nouveau.

adp.Dispose(); 
comFna.DataSource = null; //ADD THIS LINE HERE OR comFna.Items.Clear(); 
comFna.DataSource = dsNa.Tables[0]; 
comFna.DisplayMember = dsNa.Tables[0].Columns[0].ColumnName; 
comFna.ValueMember = dsNa.Tables[0].Columns[1].ColumnName; 
0
comFna.Items.Clear(); 

avant de remplir votre comboBox, utilisez ce code pour supprimer les anciens éléments, puis re-remplir.

Questions connexes