AcceptChanges 및 RejectChanges
DataTable의 데이터에서 변경된 내용이 정확한지 확인한 후 DataRow, DataTable 또는 DataSet의 AcceptChanges 메서드를 사용하여 변경 내용을 승인할 수 있습니다. 그러면 Current 행 값이 Original 값으로 설정되고 RowState 속성이 Unchanged로 설정됩니다. 변경 내용을 승인하거나 거부하면 모든 RowError 정보가 지워지고 HasErrors 속성이 false로 설정됩니다. 또한, 변경 사항을 승인하거나 거부하면 데이터 소스에서 데이터를 업데이트하는 데도 영향을 줄 수 있습니다. 자세한 내용은 DataAdapters를 사용하여 데이터 원본 업데이트를 참조하세요.
DataTable에 외래 키 제약 조건이 있는 경우 AcceptChanges 및 RejectChanges를 사용하여 승인되거나 거부된 변경 내용이 ForeignKeyConstraint.AcceptRejectRule에 따라 DataRow의 자식 행으로 전파됩니다. 자세한 내용은 DataTable 제약 조건을 참조하세요.
다음 예제에서는 오류가 발생한 행을 검사하여 가능한 경우 오류를 해결하고 오류를 해결할 수 없는 경우에는 해당 행을 거부합니다. 오류가 해결된 경우 RowError 값이 빈 문자열로 설정되므로 HasErrors 속성은 false로 설정됩니다. 오류가 발생한 모든 행이 해결되거나 거부되면 AcceptChanges가 호출되어 전체 DataTable의 모든 변경 사항이 승인됩니다.
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();