2009-10-16 68 views
2

我正在尝试向我的C#winforms应用程序添加一些额外的日志记录。我有几个数据绑定表单,所有数据库的东西都由一个绑定源和一些类型化数据集/适配器管理。检测数据集/数据表中的某行已更改

有了这个设置,很难判断什么时候发生了变化,我必须管理每个字段并保持它以前的值。有没有一种方法可以将数据集绑定到数据集中并告诉什么时候发生了变化?我知道datarow有一个RowState枚举,这会是一个很好的开始吗?我查看了绑定源的DataMemberChanged事件,但它从未解雇过...

回答

4

您可以使用RowChanged事件,RowChanging事件或由DataTable引发的任何other events

+0

将这些也给了我先前的值(S)?还是那么多要问? – Malfist 2009-10-16 13:45:29

+0

我不认为会。我知道您可以通过调用RejectChanges将行恢复为其以前的值来回滚更改。 – David 2009-10-16 13:51:54

+0

我可以告诉哪列更改了吗? – Malfist 2009-10-16 13:59:58

5

要知道发生了什么变化看看DataSet.GetChanges method。该示例显示如何获取更改并通过它们。我还有一个使用DataTable的old example here,并显示合并后如何进行比较。它检查RowState并显示更改的值等。它接近页面底部,因为OP使用的是C#,所以它在VB中。我现在走出去了,所以我不能提供同等的翻译,但从一些有用的技术搜集起来应该是非常简单的。

11

以获得更新的数据值,你可以做到这一点的原始值:

<DataTableRow>[<DataColumn>, DataRowVersion.Original] 
+0

我希望我能分出正​​确答案的功劳...谢谢! – Malfist 2009-10-16 14:07:03

+1

这是很棒的信息。谢谢!我会自己使用它。我希望我可以为此投票超过一次。 – David 2009-10-16 14:09:42

+0

很高兴我能帮到.... – CSharpAtl 2009-10-16 14:17:21