Bonjour,
j'ai déjà vu un problème similaire sur le net mais je n'arrive plus à mettre la main dessus.
Voilà exactement ma situation :
J'ai une fenêtre principale dans laquelle je déclare et initialise un DataSet via un fichier csv. Je déclare également une fenêtre fille ouverte à l'aide de la méthode show() et une classe de traitement de données (gestion de trame du port série).
Ces deux classes sont initialisées par un constructeur qui prend par référence le DataSet de la fenêtre principale. Si je ne me trompe pas, les trois classes possèdent donc la même DataSet du point de vue mémoire.
Dans la classe de traitement de données, je modifie des valeurs dans ma Table du DataSet.
Dans la fenêtre fille, j'initialise mes composants avec la méthode DataBindings et je modifie le bindingcontext pour pointer sur la ligne désirée.
voici la fonction utilisée pour ça :
Code :
- privatevoid Binds(System.Windows.Forms.Control composant,System.String champ_composant, int position, System.String champ_ds)
- {
- composant.DataBindings.Add(champ_composant,this.dataSet1,champ_ds);
- composant.BindingContext = new System.Windows.Forms.BindingContext(); // BindingContext Différent de la fenetre parente
- BindingManagerBase bmb = composant.BindingContext[this.dataSet1,"BDD"];
- bmb.Position = position;
- }
|
Je possède également un datagrid dans cette fenêtre pour voir l'état du DataSet.
Mon problème est le suivant : lorsque j'ouvre la fenêtre fille pour la première fois, les liaisons avec le dataset fonctionne très bien. Lorsque je veux modifier le DataSet pendant que la fenêtre fille est ouverte ou lorsque je la réouvre, tous les composants liés au DataSet ont gardés leur première valeur. Remarque : le datagrid contient les valeurs modifiées dans le DataSet.
Quelqu'un sait-il comment faire pour que les liaisons de mes composants soient refraichies correctement ?
Merci de votre aide,
Gwen