- 當我們用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;
}
- 參考資料 : 資料列狀態和資料列版本
沒有留言:
張貼留言