DatatableRowchanging Event和DataTableRowChanged事件有什么区别

时间:2013-06-04 18:47:19

标签: c# winforms datatable

我正在尝试了解数据表的RowChangingRowchanged事件之间的区别。我已经查了MSDN博客,但找不到任何实际的区别。

这是我得到的:

  1. 两者使用相同的Datarowchangeeventargs:因此他们拥有相同的事件数据集。 即; e.Actione.row
  2. 在观察窗口中,我检查了这些事件数据是否有任何变化,但它们是相似的。如果在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()将允许在此行中创建新数据。”

    请指导上面的行更改事件例外。

3 个答案:

答案 0 :(得分:1)

在成功更改DataRow之后,会发生RowChanged事件。

在更改DataRow期间发生RowChanging事件。这将使您有机会在行本身更改之前执行代码。

答案 1 :(得分:1)

根据MSDN

DataTable.RowChangingDataRow正在发生变化时会发生事件。

,而

DataTable.RowChanged事件在成功更改DataRow后发生。

如果您在更改事件时抛出异常,则可以退出更改。变 您可以用来在其他表中进行更改的事件但是您不能(简单地说 辞职。

是的,它True都包含相同的事件数据,即e.Actione.Row;但更重要的是,你想在什么时间点做什么操作。

表示尚未验证数据的OnChanging事件。因此,如果您在此阶段进行任何代码更改,那么如果验证失败,数据可能不会持久存在。在OnChanged事件中,您可以根据自己的要求更改代码。

答案 2 :(得分:0)

来自MSDN

RowChanging :在DataTable中为DataColumn值或DataRow的RowState提交更改时发生。

RowChanged :在DataTable中的DataCow的DataCow或DataRow的RowState成功更改后发生。在这种情况下,我们可以告诉应用程序接下来会做什么..

example here