2010-03-12 85 views
1

我有一些遺留數據集代碼,我正在更新。我試圖確定數據集是否有更改,以便我可以正確提示保存請求。但是myDataset.HasChanges()總是返回true。即使在運行TableAdapter.Update後,DataSet.HasChanges仍然是真的

在我保存方法我編輯的代碼,以確定數據集中獲取的變化時,並提出這樣的代碼:

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

1號線後, - myDataSet.HasChanges =真(可以理解)
線2條,後 - myDataSet.HasChanges = FALSE(可以理解)
3號線,後 - myDataSet.HasChanges =真

我不確定爲什麼會發生在第3行,不應該這是假的,因爲我只是在數據集上運行更新?

回答

1

可能有一個UI元素導致在dataSet/dataTable中更改值。

在沒有任何DataBinding的簡單consoleApplication中嘗試您的代碼。

+1

有數據綁定項目,發射「改變,但沒有改變」數據的事件 – 2010-10-15 15:51:18

+0

@NathanKoop你找出一個修復?我有這個完全相同的問題。 – styfle 2013-09-20 00:38:34

+1

如果我記得正確(這是幾年前),我相信我有一個Textbox.OnChange事件觸發,並將修改其他文本框,然後將更改數據集。 – 2013-09-20 13:42:53

1

你的TableAdapter是否刷新你的DataSet?如果是這樣,那麼你可能有一些像初始化密鑰(記住,GUID ==好,INT ==不好)。就像從TableAdapter填充時一樣,您需要調用AcceptChanges以將所有行的狀態重置爲未更改。

+0

我不確定TableAdapter是否刷新數據。它所做的只是更新... WHERE id = @myId;我嘗試在那裏添加一個AcceptChanges(在第2行和第3行之間),我仍然得到相同的結果。我使用int的(不是我的數據庫設計,我不能改變它)。也不應該有任何鍵被初始化,在我測試的情況下,我加載表單(噸數據綁定等...),然後按下保存按鈕,而不更改任何數據,這發生了 – 2010-03-15 14:35:20

相關問題