Salut à tous !
Ben voilà tout est dans le titre ! Dans mon application j'ai une ComboBox qui a pour source une DataTable. Cette DataTable a deux colonnes qu'elle récupère sur une base de données Oracle !
La requête ne change jamais mais elle peut s'appliquer à des bases différentes (qui évidemment contiennent la même table avec les mêmes champs...). La mise à jour de la DataTable n'est pas compliquée mais si l'utilisateur saisi le mauvais mot de passe et que la connexion à la base n'est pas possible, je voudrais que la DataTable se vide et vide ainsi ma ComboBox histoire que l'utilisateur ne croit pas qu'il est connecter !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 DataTable maDataTable = new DataTable(); OleDbDataAdapter monDataAdapter = new OleDbDataAdapter(maRequete, "Provider=msdaora;Data Source=" + serveurBD + ";User ID=" + utilisateurBD + ";Password=" + mdpBD + ";"); monDataAdapter.Fill(maDataTable); maDataTable.Columns[0].ColumnName = "Identifiant"; maDataTable.Columns[1].ColumnName = "Libelle"; maComboBox.DataSource = maDataTable; maComboBox.DisplayMember = "Libelle"; maComboBox.ValueMember = "Identifiant";
En sachant également qu'il n'est pas possible de faire :
sur une ComboBox qui dispose d'une DataSource.
Code : Sélectionner tout - Visualiser dans une fenêtre à part maComboBox.Items.Clear()
Pour l'instant la solution que j'adopte c'est de déconnecter la DataTable de la ComboBox (maComboBox.DataSource = null;), nettoyer la ComboBox (maComboBox.Items.Clear();) et reconnecter les deux ensemble (maComboBox.DataSource = maDataTable;). Vous avouerez que c'est pas très joli...
Merci à vous pour vos idées et votre reflexion !!!
Antoine
Partager