DataRow の更新を元に戻す方法

  DataTable の特定行 DataRow の更新を元に戻すには、「RejectChanges()」メソッドを使用します。
 このメソッドを実行することで、データ読込み直後、または「AcceptChanges()」メソッド実行直後の状態に戻すことができます。
【サンプル C#】

 DataTable の指定列がある値の行の更新を元に戻します。
  // dt は DataTable
  // index は指定の列番号
  // KeyValue は指定する値

  // 追加行の復旧に伴う行削減に対応する為、最終レコードから遡って処理する
  for ( int n = dt.Rows.Count - 1 ; n <= 0 ; n-- )
  {
      DataRow dr = dt.Rows[n];

      // 削除された行は、元のデータでチェック
      if ( dr.RowState == DataRowState.Deleted )
      {
          if ( dr[index, DataRowVersion.Original] != KeyValue )
          {
              // 更新を元に戻す
              dr.RejectChanges();
              // エラー情報をクリアする
              dr.ClearErrors();
          }
      }
      else if (  dr.RowState != DataRowState.Unchanged && dr[index] == KeyValue )
      {
          // 更新を元に戻す
          dr.RejectChanges();
          // エラー情報をクリアする
          dr.ClearErrors();
      }
  }

【注意】
 削除された DataRow の各フィールドには、通常ではアクセスすることができないので、行のバージョンを指定してアクセスします。各フィールドの値は、DataRwo[”フィールド名”, DataRowVersion.Original] で取得できます。
 「RejectChanges()」メソッドを実行しても、DataRow のカスタムエラー情報はクリアされません。別途「ClearErrors()」メソッドを実行して下さい。
戻る