RLAPT
Messages postés48Date d'inscriptionlundi 11 avril 2011StatutMembreDernière intervention29 avril 2020
-
Modifié par RLAPT le 31/07/2013 à 19:37
rlapt -
2 août 2013 à 07:02
Bonjour,
Je rencontre la difficulté suivante :
J'ai créé une forme avec une DataGrid et un bouton.
La DataGrid est chargée avec une DataTable
Me.DataGridView1.DataSource = MonDataTable
Le tout s'affiche normalement et les cellules de la DataGrid sont bien modifiables.
De plus une Procédure permet d'enregistrer la DataTable dans la base de données. Elle est lancée de deux façons :
- le changement de ligne dans la DataGrid
- Le clic sur le bouton
La difficulté est la suivante :
L'enregistrement des modifications lorsque l'on change de ligne dans la DataGrid ne fonctionne pas.
Si je clique sur le Bouton qui lance la même procédure d'enregistrement que celle lancée sur l'événement : DataGridView1_RowLeave, les modifications sont bien prises en compte dans la base de données. Après vérification, effectivement sur un changement de ligne les modifications ne sont pas reportées sur la DataTable.
Après avoir regardé toutes les propiétés et méthodes de la DataGrid, je ne trouve pas comment forcer la modification de la DataTable sur un changement de ligne.
RLAPT
Messages postés48Date d'inscriptionlundi 11 avril 2011StatutMembreDernière intervention29 avril 2020 31 juil. 2013 à 20:49
Bonsoir NHenry,
Merci de votre aide.
Effectivement avant d'écrire la totalité de ma question je ne m'étais pas connecté.
Lorsque je me suis connecté au milieu de l'écriture du message il est parti tout seul.
Comme je le l'expliquais dans mon texte, dans mon cas, c'est le transfert des données entre la DataGrid et la DataTable qui ne se fait que lorsque l'on perd le focus de la DataGrid. Lors du changement de ligne (on ne perd pas le focus donc) la DataTable n'est pas remis à jour. Ce qui implique que lors de l'enregistrement de la DataTable dans la base de données rien ne change.
Dans le cas du clic sur bouton :
Pour actionner le bouton, il faut sortir de la DataGrid (donc elle perd son focus). Ceci implique que les modifications effectuées dans la DataGrid sont bien transférées dans la DataTable et donc être enregistrées dans la base de données.
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Finalement pour ceux que cela intéresse, j'ai trouvé la cause.
lorsque je voulais enregistrer, j'utilisais l'événement "RowLeave" de la DataGrid. L'erreur était là. Sur le déclenchement de cet événement, le transfert des modifications dans le DataSet n'est pas encore fait.
Une solution consiste à utiliser "RowEnter" de l'arrivée sur la ligne suivante.