[C# / .NET 2.0] Mettre à jour une comboBox lorsque datasource est modifié
Bonjour,
Voilà mon souci: j'ai une <list> qui contient des objets "onglet" dont je veux afficher la propriété "nom" comme texte dans une comboBox1 et je voudrais leur associer la propriété "id" (ne començant pas à 0 et non continu, cad à 3 peut succeder 5). J'ai donc utilisé comboBox1.datasource = maList, displaymember = "nom", valuemember = "id". Quand j'initialise ma form la combobox est remplie comme il faut pas de pb... là où ça se corse c'est lorsque je modifie "maList" ... la combo ne se met pas à jour, donc en désespoir de cause j'ai fait un "dispose()" de ma combo et je l'ai reconstruite à chaque modifications de "maList". Contrairement à ce que vous pourriez penser: ça marche ! lol Mais ! ... eh oui il y a un "mais": quand je fait une reconstruction et que dans "maList" les propriétés "id" ne suivent pas (1,2,4,5) j'ai droit à un:
Code:
1 2 3
| "Une exception non gérée du type 'System.ArgumentOutOfRangeException' s'est produite dans System.Windows.Forms.dll
Informations supplémentaires : InvalidArgument=La valeur '3' n'est pas valide pour 'SelectedIndex'." |
Cette erreur se produit lorsque j'appel "this.Controls.Add(this.comboBox1);"
Une idée ?
Ah et dernière chose que j'ai oublié de préciser: je n'arrive pas à mettre à jour en redéfinissant la propriété "datasource"...
Merci d'avance à toutes vos propositions.
Renversement de situation
Après un coup de pouce donné par un autre forum, j'ai à peu près résolu mon problème ! Of course il y a un "mais" ... J'ai donc affecté la valeur "null" à datasource avant de lier à nouveau ma list une fois modifiée. (Je sais c'était très bête j'aurais pu y penser tout seul mais j'avais essayé d'affecter "" à datasource qui ne marchait pas et ça m'avait mis dans l'esprit que null aussi...) Il n'y a plus de problème lors de suppression et d'ajout d'élément dans la liste... en revanche la zone de saisie (la combo est en readonly) devient transparente ! :?
J'ai bien tenté refresh() et update(), sans succès. :(
Une proposition ?