CV.net3.0によるDataTableの更新処理

DataTableには、ある時点からの変更内容を取得できる機能がある。

                                                                                                • -

DataTable dbTest=new DataTable(); ....
// レコード追加の処理
dbTest.AcceptChanges(); // 変更の確定

// ここから、追加、修正、削除などの処理を行っていく....
// 追加、修正、削除の各行を取得する。もしなかった場合にはnullになる
DataTable tbChangeAdd = dbTest.GetChanges(DataRowState.Added);
DataTable tbChangeMod = dbTest.GetChanges(DataRowState.Modified);
DataTable tbChangeDel = dbTest.GetChanges(DataRowState.Deleted);
// 削除された or 修正された場合に、修正前の値はDataRowVersion.Originalで取得可能
System.Diagnostics.Debug.WriteLine(tbChangeDel.Rows[0][0,DataRowVersion.Original].ToString()+","+tbChangeDel.Rows[0][1,DataRowVersion.Original].ToString());

// 追加、修正、削除の内容を適切に処理した後、DataTableを確定する場合
dbTest.AcceptChanges();
// 追加、修正、削除の内容を適切に処理した後、なんらかのエラーがあり元に戻す場合
dbTest.RejectChanges();

                                                                                                • -

3Tierで処理する場合、
1.サーバからデータ取得しDataTableにセット[AcceptChanges()]
2.DataGridViewにてユーザ操作(DataTableをバインド)
3.DataTableに対する変更内容をサーバに反映(追加、修正、削除)
4.サーバからの応答結果によりDataTable側に変更をコミットするかロールバックするか判定
という流れになる。


MEMO(60563)