我正在尝试了解数据表的RowChanging
和Rowchanged
事件之间的区别。我已经查了MSDN博客,但找不到任何实际的区别。
这是我得到的:
Datarowchangeeventargs
:因此他们拥有相同的事件数据集。
即; e.Action
和e.row
。在观察窗口中,我检查了这些事件数据是否有任何变化,但它们是相似的。如果在RowChanging
中有取消,那么它就意味着验证。
总而言之,我很困惑为什么这两个事件的意思相同。
请清除我的困惑。
这是我的差异,我根据我从答案中得到的指示找到了。
我在列中添加了几行并调用了两个事件。我尝试在更改和更改事件上执行e.Row.RejectChanges() 多数民众赞成在我意识到e.Row实际上是拟议的行。 所以Rejectchanges给了我错误“无法在rowchanging事件中取消()。” 但它允许拒绝在RowChanged事件中发生。 所以发生了以下顺序: 1.RowChangingEvent e.Action =已添加(因为我向表中添加了多行) e.Row.RowState =分离。 2. RowChanged事件 e.Action =新增 e.Row.RowState =已添加(红色,因为它在此处已更改并添加到数据表中)
至于例外: 我收到了“无法在行改造事件中使用取消对象()”
在rowChanged事件中,我得到“此行已从表中删除,并且没有任何数据.BeginEdit()将允许在此行中创建新数据。”
请指导上面的行更改事件例外。
答案 0 :(得分:1)
在成功更改DataRow之后,会发生RowChanged事件。
在更改DataRow期间发生RowChanging事件。这将使您有机会在行本身更改之前执行代码。
答案 1 :(得分:1)
根据MSDN:
DataTable.RowChanging
当DataRow
正在发生变化时会发生事件。
,而
DataTable.RowChanged
事件在成功更改DataRow
后发生。
如果您在更改事件时抛出异常,则可以退出更改。变 您可以用来在其他表中进行更改的事件但是您不能(简单地说 辞职。
是的,它True
都包含相同的事件数据,即e.Action
和e.Row
;但更重要的是,你想在什么时间点做什么操作。
表示尚未验证数据的OnChanging
事件。因此,如果您在此阶段进行任何代码更改,那么如果验证失败,数据可能不会持久存在。在OnChanged
事件中,您可以根据自己的要求更改代码。
答案 2 :(得分:0)
来自MSDN:
RowChanging :在DataTable中为DataColumn值或DataRow的RowState提交更改时发生。
RowChanged :在DataTable中的DataCow的DataCow或DataRow的RowState成功更改后发生。在这种情况下,我们可以告诉应用程序接下来会做什么..