AcceptChanges 및 RejectChanges

DataTable의 데이터에서 변경된 내용이 정확한지 확인한 후 DataRow, DataTable 또는 DataSetAcceptChanges 메서드를 사용하여 변경 내용을 승인할 수 있습니다. 그러면 Current 행 값이 Original 값으로 설정되고 RowState 속성이 Unchanged로 설정됩니다. 변경 내용을 승인하거나 거부하면 모든 RowError 정보가 지워지고 HasErrors 속성이 false로 설정됩니다. 또한, 변경 사항을 승인하거나 거부하면 데이터 소스에서 데이터를 업데이트하는 데도 영향을 줄 수 있습니다. 자세한 내용은 DataAdapters를 사용하여 데이터 원본 업데이트를 참조하세요.

DataTable에 외래 키 제약 조건이 있는 경우 AcceptChangesRejectChanges를 사용하여 승인되거나 거부된 변경 내용이 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();  

참고 항목