- 當我們用DbDataAdapter.Update這個方法來更新Dataset的的紀錄時,它會根據Rowstate的值來做INSERT、UPDATE 或 DELETE。
但是在程式執行過程中,如果這個Dataset和(1)Datagridview或Textbox等控件做Binding時或(2)新增一個欄位時,它的RowState也會被改變。
所以為了DbDataAdapter.Update能正確更新使用者修改的紀錄,執行綁訂或新增欄位後需要將Dataset所有的紀錄的RowState恢復為UnChanged,以下程式可以達成此需求:
A. 針對單一Table :
internal static bool changeRowStateToUnchanged4Table(DataTable myTable) { bool verify = false; try { foreach (DataRow dr in myTable.Rows) { if (dr.RowState != DataRowState.Unchanged) dr.AcceptChanges(); } verify = true; } catch (Exception) { verify = false; } return verify; }
B 針對所有的Table:
- 參考資料 : 資料列狀態和資料列版本
internal static bool changeRowStateToUnchanged4Dataset(DataSet myDataset) { bool verify = false; try { foreach (DataTable table in myDataset.Tables) { foreach (DataRow dr in table.Rows) { if (dr.RowState != DataRowState.Unchanged) dr.AcceptChanges(); } } verify = true; } catch (Exception) { verify = false; } return verify; }
- 參考資料 : 資料列狀態和資料列版本
沒有留言:
張貼留言