2009-10-16 33 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