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();