スキマハコ

わすれがちなスキマな事を詰め込んでいます。ITの他に暮らしについても書いています。

BeginEditとEndEditの働き

 忘れそうなのでメモしておく。
 バインドしていると、BeginEditは呼ばなくても開始している。
 働きとして2つ。

  1. RowStateの更新
  2. Row値についてのバージョン管理切替え
メンバー名 説明
Original この行には元の値が格納されています。
Current この行には現在の値が格納されています。
Proposed この行には提示された値が格納されています。
Default DataRowState の既定バージョン。 DataRowState の値が Added、Modified、または Deleted の場合、既定バージョンは Current です。 DataRowState の値が Detached の場合、既定バージョンは Proposed です。

DataRowVersion 列挙体 (System.Data)

 EndEditを呼ばない限り、編集中なのでバインドしているコントロールの値はProposedに格納されたままでCurrent(現在の値)にはならない。

 AcceptChanges メソッドを呼び出すと、Original 値が Current 値と同じになってしまうので、変更を比較したい時には利用しない。

 あと、RejectChangesメソッドは保留中のProposedを消してしまうのはCancelEditと同じ動きっぽい。