AcceptChanges と RejectChanges

DataTable 内のデータに行われた変更が正確であるかどうかを検証した後で、DataRowDataTable、または DataSetAcceptChanges メソッドを使用して、変更を受け入れることができます。変更を受け入れると、Current 行値が Original 値に設定され、RowState プロパティが Unchanged に設定されます。 変更を受け入れるかまたは拒否すると、RowError 情報が削除され、HasErrors プロパティが false に設定されます。 変更を受け入れるかまたは拒否した場合、データ ソース内で実行中の更新操作にも影響することがあります。 詳細については、「DataAdapter によるデータ ソースの更新 (ADO.NET)」を参照してください。

DataTable に外部キー制約が存在する場合、AcceptChangesRejectChanges を使用して受け入れられた変更または拒否された変更は、ForeignKeyConstraint.AcceptRejectRule に基づいて DataRow の子の行に反映されます。 詳細については、「DataTable の制約 (ADO.NET)」を参照してください。

行にエラーがあるかどうかをチェックし、必要に応じてエラーを解決し、エラーを解決できない場合にはその行を拒否する例を次に示します。 解決されたエラーについては、RowError 値が空の文字列にリセットされるため、HasErrors プロパティが false に設定されます。 エラーのある行がすべて解決または拒否された時点で、DataTable 全体に対するすべての変更を受け入れるために、AcceptChanges が呼び出されます。

If workTable.HasErrors Then
  Dim errRow As DataRow

  For Each errRow in workTable.GetErrors()

    If errRow.RowError = "Total cannot exceed 1000." Then
      errRow("Total") = 1000
      errRow.RowError = ""    ' Clear the error.
    Else
      errRow.RejectChanges()
    End If
  Next
End If

workTable.AcceptChanges()
if (workTable.HasErrors)
{

  foreach (DataRow errRow in workTable.GetErrors())
  {
    if (errRow.RowError == "Total cannot exceed 1000.")
    {
      errRow["Total"] = 1000;
      errRow.RowError = "";    // Clear the error.
    }
    else
      errRow.RejectChanges();
  }
}

workTable.AcceptChanges();

参照

参照

DataRow

DataSet

DataTable

その他の技術情報

DataTable 内のデータの操作