DatatableRowchanging Event和DataTableRowChanged Event的区别是什么?
本文关键字:Event 是什么 区别 DataTableRowChanged DatatableRowchanging | 更新日期: 2023-09-27 18:16:49
我试图理解RowChanging
和Rowchanged
事件之间的差异。我已经检查了MSDN博客,但没有发现任何实际差异。
这是我得到的:
- 都使用相同的
Datarowchangeeventargs
:所以他们有相同的事件数据集。即;e.Action
和e.row
.
在观察窗口中,我检查了这些事件数据是否有任何变化,但它们是相似的。如果RowChanging
中有Cancel,那么它就意味着验证。
总而言之,我很困惑为什么这两个事件意味着相同的。
请为我解惑。
这是我的差异,我发现基于我从答案得到的指针。
我向列中添加了几行,并调用了两个事件。我尝试在更改和更改事件上执行e.Row.RejectChanges()那时候我才意识到e.o row实际上是提议的row。所以Rejectchanges给了我错误"不能取消()在rowchanging事件"。但它允许在RowChanged Event中发生reject。于是发生了下面的事情:1.RowChangingEvente.Action=添加(当我添加多行到表)e.Row.RowState =分离。2. RowChanged事件e.Action =补充道e.Row。RowState=Added(用红色表示,因为它在这里被修改并添加到数据表中)
对于Exception:我收到"Cannot cAll CancelEdit() in row change event"
在rowChanged事件我得到"这一行已从表中删除,没有任何数据。BeginEdit()将允许在这一行创建新数据。"
请指导我将上述一行更改为Event Exception
RowChanged Event发生在一个DataRow被成功修改后
RowChanging Event发生在DataRow的变化过程中。这将使您有机会在更改行本身之前执行代码。
根据MSDN:
DataTable.RowChanging
当DataRow
发生变化时发生事件。
,
DataTable.RowChanged
DataRow
修改成功后发生的事件。
如果你在更改事件中抛出异常,你可以退出更改。改变了事件可以用于在其他表中进行更改,但不能(在简单的)辞职。
是的,如果True
都包含相同的事件数据,即e.Action
和e.Row
;但更重要的是你想在什么时间做什么操作。
表示OnChanging
事件数据尚未验证。因此,如果您在此阶段更改任何代码,那么如果验证失败,数据可能不会持久。而在OnChanged
事件中,您可以根据需要更改代码。
From MSDN:
RowChanging:当数据表中dataccolumn值或DataRow的RowState发生变化时发生。
RowChanged:发生在DataTable中某个dataccolumn的值或某个DataRow的RowState被成功修改后。在这个事件中,我们可以告诉应用程序下一步要做什么。
(例子)