J'essaie de comprendre la différence entre RowChanging
et Rowchanged
événement de datatable. J'ai vérifié le blog de MSDN mais n'ai pas pu trouver n'importe quelle différence pratique.Quelle est la différence entre DatatableRowchanging Event et DataTableRowChanged Event
Voici ce que je suis:
- deux Utiliser la même
Datarowchangeeventargs
: Ils ont même ensemble de données d'événement. à savoir;e.Action
ete.row
.
Dans la fenêtre de surveillance j'ai vérifié s'il y avait des changements à ces données d'événement mais elles étaient similaires. S'il y aurait eu Annuler dans RowChanging
alors cela aurait signifié à propos de la validation.
Donc dans l'ensemble, je suis confus pourquoi les deux événements si elles signifient la même chose.
Veuillez effacer ma confusion.
Voici ma différence que j'ai trouvée en fonction des pointeurs que j'ai obtenus des réponses.
J'ai ajouté quelques lignes à la colonne et j'ai appelé les deux événements. J'ai essayé de faire e.Row.RejectChanges() sur les deux changeant et changé l'événement c'est quand j'ai réalisé que e.Row est réellement la rangée proposée. alors Rejectchanges me donnait l'erreur "Can not Canceledit() dans l'événement rowchanging". Mais il autorisait le rejet dans l'événement RowChanged. donc la séquence suivante s'est produite: 1.RowChangingEvent e.Action = Ajouté (comme j'ajoutais plusieurs lignes à la table) e.Row.RowState = Détaché. 2. RowChanged événement e.Action = Ajouté e.Row.RowState = Ajouté (en rouge comme il a été changé ici et ajouté à datatable)
Quant à l'exception: j'ai reçu « ne peut pas appeler CancelEdit() dans l'événement rowchanging "
In rowChanged J'ai reçu" Cette ligne a été supprimée d'une table et ne contient aucune donnée. BeginEdit() va permettre la création de nouvelles données dans cette ligne. "
Veuillez me guider avec l'exception Event Event modifiée.
Les deux se produisent l'un après l'autre des thats vrai, mais les deux ont les mêmes données d'événement. Ma question est quelle est l'utilisation de deux événements quand vous pouvez faire la même chose avec un. Donc, vous pouvez exécuter du code dans les deux et faire n'importe quelle exécution et les deux seront identiques. – user2432715
Peut-être dans le contexte que vous en pensez, votre demande sera la même. Cependant, vous pouvez lancer une exception dans l'événement RowChanging, ce qui empêcherait l'événement RowChanged de se déclencher (vous effectuez peut-être une sorte de validation). Si la validation réussit, vous pouvez utiliser l'événement RowChanged pour faire ce dont vous avez besoin, sinon lancer une exception. Tout dépend de ce que vous voulez faire quand la rangée est changée. Ils peuvent tous deux être utilisés pour faire les mêmes choses dans certains cas. – Vahlkron
En règle générale, de nombreux objets du CLR incluront ces paires d'événements pour lesquelles un événement est prévu avant que l'objet ne soit modifié, et l'autre événement pour après. Le passé/présent de la commande devrait vous aider à comprendre cela. – mason