[VB.NET v 1.1] Bug avec DATAGRID !!

Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 - 27 juin 2005 à 15:06
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 - 1 juil. 2005 à 13:58
Salut,
j'ai découvert un bug sur les System.Windows.Forms.DataGrid et j'aimerais savoir si quelqu'un aurait une solution à proposer pour essayer de le contourner.

Ce bug consiste en la non-modification de l'état d'une ligne de la grille (DataRow) de DataRowState.Unchanged en DataRowState.Modified même si je modifie le contenu de l'une de ses cellules.
La DataGrid est liée à une DataTable que j'ai rempli avec le résultat d'une requête sur une Base de Données. Avec ce bug, le contenu de la cellule de cette ligne dans la DataTable est bien modifié, mais c'est l'état de cette ligne qui pose problème en ne passant pas à l'état DataRowState.Modified. A cause de cela je ne peux pas appliquer cette modification à la Base de Données.

Pour obtenir ce problème, il faut effectuer une opération spéciale.
Voici la marche à suivre :

1) Cliquer sur l'une des cellules de format texte de la DataGrid.
2) En modifier le contenu (taper quelque chose au clavier).
3) Cliquer sur l'en-tête de l'une des colonnes pour effectuer un tri selon celle-ci et il faut ABSOLUMENT que la ligne modifiée ne soit plus à la même position. (exemple: vous avez 3 lignes dans votre grille, vous modifiez l'une des cellules de la 1ère ligne, vous effectuez un tri selon n'importe quelle colonne, la ligne que vous avez modifié se retrouve en dernier(3ème position), ou en 2ème, mais IL NE FAUT PAS qu'elle soit à la même place (càd la 1ère ligne de la grille))
4) Vérifier dans la DataTable liée à la DataGrid : l'état de la ligne modifiée est à DataRowState.Unchanged alors que la valeur de la cellule est bien différente.

Des propositions ? Je suis prêt à tout écouter....

Merci.

PS : Je sais !!! Le composant System.Windows.Forms.DataGrid est une vraie DAUBE, mais dans mon entreprise on n'a pas le temps de se développer nos propres composants et les responsables du service sont trop cons pour comprendre ça. GRRRRR !!! >:(

6 réponses

cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
27 juin 2005 à 23:36
C'est bizarre, on ne réremplit pas le dataset avec le datagrid.

Dataset > Datagrid On modifie et Datagrid > Dataset

Juste faites-le
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
29 juin 2005 à 09:41
Oui je sais il n'y a pas de problème pour ça, je ne reremplis pas la DataTable...les modifications s'appliquent bien à la DataTable, mais la ligne(DataRow) concernée par la modification reste à l'état DataRowState.Unchanged dans la DataTable....et c'est ça le problème.... Comment savoir si une ligne a été modifié si son état ne l'indique pas ???

Pour l'instant, la seule solution acceptable que j'ai pu trouver est tout simplement d'interdire le tri par click sur un en-tête de colonne. Si l'utilisateur a vraiment l'utilité de trier selon une colonne, j'implémenterai cette fonctionnalité moi-même comme ça je serai sûr que ca fonctionnera au moins....
0
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
29 juin 2005 à 10:04
Peut-être de rajouter un champ à ta table, que tu modifie lors de l'édition d'une ligne ou d'une case du datagrid.

Il faut regarder dans les évenements KeyPress sur le datagrid.

Je ne suis pas un pro du datagrid, je ne les ai jamais utilisé que ce soit sout VB6 que sous .net



Bon courage..


Juste faites-le
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
29 juin 2005 à 15:14
Et ben ça se voit !! lol
Personnellement je te conseille justement de ne pas t'y frotter car c'est vraiment la catastrophe !!! Faut vraiment avoir honte de développer des horreurs pareilles avec autant de bugs (et je peux te dire qu'il y en a pas mal) !!! Ils ont corrigé bon nombre de bugs sur les DataGrid pour la version 1.1 du framework, mais apparemment ils en ont oublié encore pas mal en chemin !!!
Le mieux c'est de développer ses propres composants bien sûr, mais malheureusement on n'a pas forcément toujours le temps. :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
29 juin 2005 à 17:21
Perso je préfère utiliser des composants basiques style listview et de
faire mes mises à jours manuellement par des requêtes SQL.

Il y a très peu de programmes en entreprise ou tu modifie directement des données via un DataGrid.

Généralement tu fais appel à une modification d'une ligne via un
listview en affichant les données modifiables via des textbox, et tu
réinjecte les modifs une fois l'action sur un bouton de validation.

Toutes les appli profesionnelle que j'ai réalisée, sont avec des bases
de données, sans datagrid.(Comme tu dis c'est trop compliqué)


Juste faites-le
0
Madvin Messages postés 123 Date d'inscription mardi 5 août 2003 Statut Membre Dernière intervention 26 août 2012 3
1 juil. 2005 à 13:58
Je suis encore tombé sur 3 bugs supplémentaires au niveau des datagrid.....c'est pathétique !!!!
Faut absolument jeter ce composant dans les chiottes !!!

Finalement ta solution n'aurait pas été plus mal...au moins on aurait pu bien maîtriser ce qu'on faisait, bien qu'elle ne soit pas très jolie jolie faut avouer. =S !!!!
0
Rejoignez-nous