DataRow の更新状況を確認する方法

  DataTable の特定行 DataRow が新しく追加、更新、削除されたかどうかを確認するには、「RowState」プロパティを使用します。
 このプロパティが返す値により、更新状況が判断できます。
また、「AcceptChanges()」メソッドを実行して DataRow への変更がコミットされた場合、「RowState」プロパティの戻り値は、更新なし(DataRowState.Unchanged) になります。
【使い方】

 DataTable の特定行 DataRow が新しく追加、更新、削除が行われたかどうかを示す値を取得します。
  // dr は DataRow
  // 更新を判断する

  switch( dr.RowState )
  {
      case DataRowState.Added:        // 追加された状態
          Console.WriteLine("追加されました");
          break;

      case DataRowState.Deleted:      // 削除された状態
          Console.WriteLine("削除されました");
          break;

      case DataRowState.Modified:     // 変更された状態
          Console.WriteLine("変更あり");
          break;

      case DataRowState.Unchanged:    // 変更なしの状態
          Console.WriteLine("変更なし");
          break;

      case DataRowState.Detached:     // 作成直後で、DataTableに追加されていない状態
          Console.WriteLine("作成直後");
          break;
  }
【注意】
 削除された DataRow の各フィールドには、通常ではアクセスすることができないので、行のバージョンを指定してアクセスします。各フィールドの値は、DataRwo[”フィールド名”, DataRowVersion.Original] で取得できます。
【補足】
 DataRowState.Detached は、DataRowが新規生成された状態を把握するのに有効で、例えば DataGrid の最終行(*行)での入力で新規 DataRow が生成された直後を把握することができます。例えば、DataTable の ColumnChanging イベント内で、該当する DataRow の RowState を確認し、 DataRowState.Detached の時、作成直後と判断でき、初期処理等を行うことができます。
戻る