Bonjour,
1) Est ce que quelqu'un sait pourquoi lorsque l'on met e.Cancel=True de l'évènement CellEndEdit du datagrid, l'évenement est rappelé aussitot? Ce qui applique deux fois mon code.
En fait, j'avais pour objectif de mettre un control de validation dans ce code, et d'empecher l'utilisateur de sortir tant que la cellule n'est pas valide, avec un petit messagebox qui lui explique la raison et une fenêtre qui s'ouvre en lui proposant de choisir sa valeur parmis une liste si c'est possible (tout dépend de la colonne) Et la fin d'édition de la ligne j'ai une instruction SQL de généré, UPDATE ou INSERT.(Et je veux pouvoir faire les insert et les update au fur et à mesure de la saisie de l'utilisateur, pour différentes raisons)
De plus lorsque l'on met un appel à une méthode, fonction, ..., dans l'évènement du CellEndEdit, l'option d'ajout de ligne automatique du datagrid ne marche plus.
Que ce soit le CellEndEdit ou le RowEndEdit ses comportements sont les mêmes.
Je me suis donc tournée vers les IDataErrorInfo et les IEditableObject, mais la je retrouve le même problème EndEdit est appelé deux fois (Pourquoi?). De plus, lorsque l'utilisateur presse la touche echap, il se produit une annulation graphiquement, mais apparament pas sur mon objet (CancelEdit est pas appelé).
Je n'arrive pas à trouver de solution pour gérer ce genre de comportement
2) J'utilise en fait la technique de l'ajout de ligne automatique du datagrid pour ajouter un nouvel element dans le tableau, l'evenement NewItem est donc bien implémenté, mais voila si l'utilisateur vient modifier une ligne vierge, NewItem est appelé, il rentre ensuite en modification d'une cellule, sur validation (touche entrer par exemple) si c'est pas valide (technique IDataErrorInfo) le focus reste dans le textbox, mais s'il presse la touche Echap, il peut aller modifié d'autre ligne et laisse donc une ligne dans un état non valide.
Mais le problème ne s'arrete pas là, en éditant une autre ligne il y a un RowEndEdit appelé deux fois et la je retombe dans le problème du 1).
J'ai donc essayer de supprimer la ligne (Lors du clique sur Echap), mais voila cette ligne étant à l'origine une ligne vierge, en la supprimant, il n'y a plus de ligne vierge dans le tableau, ce qui m'empeche d'ajouter d'autre ligne.(même problème que le 1))
Je sais pas si tout est bien clair. En fait je me demande si je l'utilise correctement le datagrid.
Tout mes problèmes vous pouvez les tester sur des cas tous simples, vous prenez le datagrid vous implementer les deux trois évènements vous mettez les points d'arrêt et constater par vous mêmes.
Si quelqu'un avait un exemple d'utilisation, qui fonctionne bien avec de la validation, et de l'empechement de sortie d'édition d'une ligne s'il elle n'est pas valide, je suis preneur car les tuto ou exemples que j'ai trouvé à son sujet sont assez simple de ce point de vue validation.
J'ai l'impression que le datagrid est bien pour de la visualisation et de la saisie simple, non ?
Merci d'avance.
Partager