0

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

这是我得到的:

  1. 两者都使用相同Datarowchangeeventargs:因此它们具有相同的事件数据集。即;e.Actione.row

在监视窗口中,我检查了这些事件数据是否有任何更改,但它们相似。如果有 Cancel ,RowChanging那么这将意味着验证。

总而言之,我很困惑为什么这两个事件的意思相同。

请清除我的困惑。

这是我根据从答案中得到的指针发现的差异。

我在列中添加了几行并调用了这两个事件。当我意识到 e.Row 实际上是建议的行时,我尝试对更改和更改的事件执行 e.Row.RejectChanges()。所以 Rejectchanges 给了我错误“不能在行更改事件中取消编辑()”。但它允许在 RowChanged 事件中发生拒绝。所以发生了以下顺序:1.RowChangingEvent e.Action=Added(因为我正在向表中添加多行)e.Row.RowState=Detached。2. RowChanged 事件 e.Action=Added e.Row.RowState=Added (红色,因为它在此处更改并添加到数据表)

至于例外:我收到“不能在行更改事件中调用所有取消编辑()”

在 rowChanged 事件中,我得到“该行已从表中删除并且没有任何数据。BeginEdit() 将允许在该行中创建新数据。”

请指导我上面的行更改事件异常。

4

3 回答 3

1

根据MSDN

DataTable.RowChanging当 a 发生DataRow变化时发生事件。

尽管

DataTable.RowChangedDataRow成功更改a 后发生事件。

如果您在更改事件中抛出异常,您可以取消更改。您可以使用更改的事件在其他表中进行更改,但您不能(以简单的方式)辞职。

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

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

于 2013-06-04T19:19:28.573 回答
1

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

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

于 2013-06-04T18:55:14.997 回答
0

来自MSDN

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

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

此处为示例

于 2013-06-05T00:57:53.813 回答