2012-07-02 68 views
1

我一直在玩DataTable的RowChanged和RowChanging事件,也與TableNewRow事件,並不能得到這個工作。在DataAdapter的Fill()方法被調用後,判斷新行是否添加到DataTable的正確方法是什麼?

本質上,我所擁有的是一個事件處理程序過程,其中的代碼填充DataTable,然後是另一個事件處理程序過程,其代碼填充相同的DataTable,並且應該通知用戶在調用Fill方法之間新行添加到表中(假設情況如此)。

我也一直在玩DataRow的索引器,並指定DataRowVersion,並不能得到它的工作。

我一直在玩DataAdapter的FillLoadOption方法,仍然無法讓這個工作。

有人可以給我一個提示嗎?

+0

我不認爲只計算行會很糟糕。糾正我,如果我錯了。 –

+1

你說得對。這將工作。但我仍然需要一種方法來顯示用戶哪些行已更改。我想我可以遍歷所有內容並手動比較行,但這似乎太笨拙。 –

+0

啊,你也想要改變。這就說得通了。 http://msdn.microsoft.com/en-us/library/k2552649.aspx –

回答

1

你可以使用DataTable.GetChanges()方法來知道哪些行已添加,修改或刪除對錶

例如發出的最後的AcceptChanges:

DataTable added = dt.GetChanges(DataRowState.Added); 
int countAdded = added.Rows.Count; 

DataRowState枚舉讓您選擇選擇其他類型的修改行

+0

順便說一句,你知道如何重新填充DataTable而不添加重複的行,只是覆蓋那些已經存在的行? –

+0

您需要探索方法[DataTable.ImportRow](http://msdn.microsoft.com/en-us/library/system.data.datatable.importrow.aspx),[DataTable.LoadDataRow](http:// msdn.microsoft.com/en-us/library/system.data.datatable.loaddatarow)和[DataTable.Merge](http://msdn.microsoft.com/en-us/library/system.data.datatable。合併) – Steve

+0

無法解釋downvote,任何人都在照顧我? – Steve

相關問題