2010-10-12 85 views
1

DataTable类有RowChanging以及RowChanged事件,这很方便(对于我们这些愚蠢到首先使用DataTable类的人)。这些事件的事件处理程序采用DataRowChangeEventArgs类型的参数,其属性包括DataRowAction(添加,更改,删除等)和DataRow被更改或刚更改。是否有可能找出RowChanging事件中发生了什么变化?

有没有办法真正知道正在被改变DataRow的字段(在RowChanging事件)或刚刚改变(在RowChanged事件)?如果没有,是否有可能以其他方式获取这些信息?

回答

4

如果您想知道哪些字段发生了变化,我认为您最好使用ColumnChanged http://msdn.microsoft.com/en-us/library/system.data.datatable.columnchanged.aspx或ColumnChanging http://msdn.microsoft.com/en-us/library/system.data.datatable.columnchanging.aspx

在这两种情况下都有一个例子来获取旧值和新值。

+1

男人,那不是我以为它是什么。多么令人误解的名字(在我看来)!似乎它应该是'FieldChanged'或类似的东西。 – 2010-10-12 13:30:33

+0

@丹涛我觉得你好兄弟。如果情况完全相同,我跳过OnColumnChanged和OnColumnChanging,因为我认为它会触发DataColumn对象的更改。但是,是的,这是确切的事件,以获得OnRowChanging不提供的额外细节。 – 2016-05-31 13:55:48

1

RowChanging事件,如果动作是Change可以使用DataRow索引,是以DataRowVersion参数,以获得旧的和新的价值。
类似的方法可以采取RowChanged事件。