Bonjour,
Je rencontre un problème que je n'arrive pas à résoudre (VS2017 Pro 15.7.3), avec une liaison entre un ComboBox dans un DataGridView et une DataTable.
Mon binding fonctionne, mais lorsque je met à jour la base de données, et que je remet à jour le binding, la ComboBox ne se rafraichit que lorsque le curseur passe sur un élément qui a été modifié.
Essayons de simplifier les explications.
J'ai deux tables, Modes de règlement et Types de règlement, la 1ère possédant un champ ID Type règlement, qui pointe sur l'ID de la 2ème.
Dans une fenêtre, on édite les Modes de règlement, dans une 2ème les Types.
Dans la fenêtre des Modes, j'ai donc une DataGridView avec une colonne Combobox, qui affiche les Types de Règlement correspondant.
Pour le binding, j'ai fait ceci :
Je charge une DataTable, DT_TypReg.
J'ai une BindingSource globale (appelont la BS_TypReg) pour le fichier Types de règlement et j'ai donc fait un
BS_TypReg.DataSource = DT_TypReg
Pour ce qui est de ma colonne ComboBox (DGVCmb) :
1 2 3 4 5
| With DGVcmb
.DataSource = BS_TypReg
.DisplayMember = "VALUE"
.ValueMember = "KEY"
End With |
Et çà s'affiche correctement au chargement.
Maintenant admettons qu'on édite un des Types de Règlement dans la 2ème fenêtre. On change le texte de "Chèque" à "Chèques". Lorsque la valeur modifiée est validée, je recharge la DataTable, et je fais :
1 2
| BS_TypReg.DataSource = Nothing
BS_TypReg.DataSource = DT_TypReg |
Tous les contrôles qui sont liés devraient donc se mettre à jour, "instantanément". Mais voilà, rien ne se passe. Jusqu'à ce que je déplace mon curseur sur la ComboBox de la fenêtre des Modes de Règlement, et sur une ligne qui affichait "Chèque". Là le binding se rafraichit et les lignes concernées passent alors à "Chèques".
J'ai tenté un ResetBindings, mais çà ne change rien.
Quelqu'un a une idée de l'origine de mon souci ?
Partager