7
votes

Comment faire rouler les modifications apportées dans la grille en cas d'entrée incorrecte

J'ai un dataGridView qui est lié à une liste d'objet. Il a quelques colonnes que l'utilisateur peut modifier. Certaines entrées ne sont pas autorisées pour une rangée dans son ensemble. Comment puis-je repousser si l'utilisateur entre des entrées non valides dans certaines cellules. J'ai essayé d'utiliser le gestionnaire d'événements RowValidant, mais on n'a pas été appelé après que la valeur cellulaire a été modifiée. Même lorsque j'implique Cellvaluchangé, je ne peux toujours pas rouler les changements. ... Aucune idée de comment accomplir ce


0 commentaires

3 Réponses :


7
votes

Une fois l'édition terminée et que vous validez les modifications, vous pouvez le faire:

DataTable dt = this.dataGridView.DataSource as DataTable;
dt.RejectChanges();


3 commentaires

dt.rejectchanges () me donne NullReferenceExcpetion ALTHU The DataSource n'est pas null


Cela signifie qu'il ne peut pas convertir la source de données en un jeu de données.


Je viens de faire mydataset1.mydatatable.rejectchanges (); J'utilise une liaison à la forme de my DGV. Merci beaucoup! Cela a fonctionné pour moi.



14
votes

Lorsque la base de données existe, pour moi, cela fonctionne avec:

myBindingSource.CancelEdit();
myDataGridView.RefreshEdit();


2 commentaires

DataGridView.Canceledit () a parfaitement travaillé pour moi!


Travaillé pour moi! Pas de liaison, juste un datagridview ... DGVProductGroups.Canceledit () DGVProductGroups.RefRefreshedit ()



0
votes

Vous pouvez utiliser l'événement Cellvalidant pour vérifier le contenu de la cellule juste avant qu'il ne soit commis. Si vous ne l'aimez pas (quelles que soient vos règles de validation), vous avez quelques options.

1) Vous pouvez annuler l'événement. L'utilisateur obtient une icône d'erreur sur la ligne et ne peut pas quitter la cellule. Ils sont verrouillés dans le comportement de la cellule d'édition jusqu'à ce qu'ils commettent la cellule (entrée, onglet) avec des données valides.

2) Vous pouvez faire rouler la valeur à une autre valeur (valeur précédente, valeur par défaut). xxx


0 commentaires