7
votes

Faites de nouvelles lignes sales de manière programmatique et insérez une nouvelle ligne après le DataGridView

J'ai un DataGridView non fondé modifié éditable. Je change la valeur de la nouvelle ligne par programme.

Normalement, lorsque les types d'utilisateurs sont dans n'importe quel champ d'une nouvelle ligne, il devient sale et une autre nouvelle ligne est insérée en dessous.

mais dans mon cas, lorsque l'utilisateur entre dans n'importe quel champ d'une nouvelle ligne, je presse la clé de fonction et modifie la valeur de la cellule par programme.

mygrid.currentcell.value = "xyz";

Et cela n'insère pas une nouvelle ligne en dessous.

maintenant comme un travail autour, j'ai essayé cela sur le gestionnaire d'événements celluluéraiséchèces. xxx

mais il jette une erreur disant Aucune ligne ne peut être insérée après la Nouvelle ligne non engagée. .

Comment pourrais-je dire à MyGrid que j'ai fait la ligne actuelle (qui est une nouvelle ligne) sale et qu'il y ait besoin d'une nouvelle ligne après cela?


0 commentaires

4 Réponses :


0
votes

Je pense que (je ne suis pas sûr, cependant), que vous essayez d'insérer une ligne après em> la nouvelle ligne ... ce qui n'est pas possible. Changer votre code sur cet

myGrid.Rows.Insert(e.RowIndex - 1, 1);


1 commentaires

Je n'ai pas besoin de ligne au-dessus de la ligne actuelle. Je change la nouvelle ligne elle-même et sur son changement, j'ai besoin d'une autre nouvelle ligne car la ligne actuelle est sale après le changement. J'ai la solution. Je le pose sous peu.



8
votes

Ici, j'ai eu la solution xxx


1 commentaires

J'ai voté pour cela, mais avec plus de tests, j'ai constaté que j'avais besoin de notifier également-notificationCurrentCellDirty (faux) comme suggéré par @Haider



0
votes

C'est vraiment très tard en tenant compte de la question de la question, mais la réponse acceptée n'a pas fonctionné pour moi. Ce qui a fini par résoudre pour moi, c'est d'abord insérer une rangée au-dessus de la rangée sale, puis modifiant cette ligne "propre". XXX


3 commentaires

Avez-vous concentré sur la cellule concernée avant d'appeler mygrid.notifyCurrentCellDirty (vrai); ?


Oui, l'utilisateur a dû double-cliquer sur la cellule avant que le système le remplisse. Cela a bien fonctionné la première fois, mais le comportement sur l'insertion répétée ne fonctionnerait pas.


Je suis en développement Web en ce moment. Alors ne peut pas vérifier votre solution. :( attendra que quelqu'un devienne uppote avant de pouvoir cocher votre réponse.



8
votes

Je travaille sur Winforms DataGridView. Dans mon cas, j'ai essayé une solution @isid, mais voici une aide en ce que j'ai essayé ce xxx

en ne faisant que la cellule actuelle sale en ne fonctionne pas, vous devez commettre cette cellule. Dans la commande suivante, je signale que la cellule actuelle n'est pas sale, cela appliquera DataGridView pour ajouter une ligne sale. Cela fonctionne dans mon projet.


0 commentaires