Поделиться через


AcceptChanges и RejectChanges

После проверки точности изменений, внесенных в данные, DataTableможно принять изменения с помощью AcceptChanges метода , DataTableилиDataSet, что задает значения текущей DataRow строки в качестве исходных значений и присвоит свойству RowState значение "Без изменений". Принятие или отклонение изменений очищает все сведения RowError и задает свойству HasErrors значение false. Принятие или отклонение изменений также может затрагивать обновление данных в источнике данных. Дополнительные сведения см. в разделе "Обновление источников данных с помощью DataAdapters".

Если ограничения внешнего ключа существуют в DataTable, изменения принимаются или отклонены с помощью AcceptChanges и RejectChanges распространяются на дочерние строки DataRow в соответствии с ForeignKeyConstraint.AcceptRejectRule. Дополнительные сведения см. в разделе "Ограничения 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();  

См. также