DataAd.HasChanges在运行TableAdapter.Update后立即生效

时间:2010-03-12 19:06:16

标签: .net data-binding dataset tableadapter

我有一些我正在更新的遗留数据集代码。我正在尝试确定数据集是否有更改,以便我可以正确提示保存请求。但是myDataset.HasChanges()总是返回true。

在我的保存方法中,我编辑了代码,以确定数据集何时获得更改,并使代码如下:

1. myBindingSource.EndEdit()
2. myTableAdapter.Update(myDataSet)
3. myBindingSource.EndEdit()

第1行后, - myDataSet.HasChanges = true(可理解)
在第2行之后, - myDataSet.HasChanges = false(可理解)
在第3行之后, - myDataSet.HasChanges = true

我不确定为什么会在第3行发生这种情况,这不应该是假的,因为我只是在数据集上运行了更新?

2 个答案:

答案 0 :(得分:1)

您的TableAdapter是否刷新了DataSet?如果确实如此,那么你可能会有一个像键被初始化的东西(记住,GUID == good,Int == bad)。就像从TableAdapter填充时需要调用AcceptChanges将所有行的状态重置为未更改。

答案 1 :(得分:1)

可能有一个UI元素导致值在dataSet / dataTable中发生变化。

在没有任何DataBinding的简单consoleApplication中试用您的代码。