DataTable内のデータに加えられた変更の精度を確認した後は、AcceptChanges、DataRow、またはDataTableのDataSetメソッドを使用して変更を受け入れることができ、現在の行の値が元の値に設定され、RowState プロパティが [変更なし] に設定されます。 変更を受け入れるか拒否すると 、RowError 情報がクリアされ、 HasErrors プロパティが false に設定 されます。 変更を受け入れるか拒否すると、データ ソース内のデータの更新にも影響する可能性があります。 詳細については、「 DataAdapters を使用したデータ ソースの更新」を参照してください。
DataTable に外部キー制約が存在する場合、AcceptChanges と RejectChanges を使用して受け入れられた変更または拒否された変更は、ForeignKeyConstraint.AcceptRejectRule に従って DataRow の子行に反映されます。 詳細については、「 DataTable 制約」を参照してください。
次の例では、エラーのある行をチェックし、該当する場合はエラーを解決し、エラーを解決できない行を拒否します。 解決されたエラーの場合、 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();