AcceptChanges и RejectChanges
Обновлен: November 2007
После проверки правильности изменений, внесенных в данные в объекте DataTable, эти изменения можно принять с помощью метода AcceptChanges объекта DataRow, DataTable или DataSet, который присваивает значениям строк Current значения Original, а свойству RowState — значение Unchanged. В результате принятия или отклонения изменений происходит удаление всех данных RowError и свойству HasErrors присваивается значение false. Принятие или отклонение изменений также может затрагивать обновление данных в источнике данных. Дополнительные сведения см. в разделе Обновление источников данных с помощью объектов DataAdapter (ADO.NET).
Если для объекта DataTable существуют ограничения внешнего ключа, то изменения, принятые или отклоненные с помощью методов AcceptChanges или RejectChanges, распространяются на дочерние строки объекта DataRow в соответствии с правилами ForeignKeyConstraint.AcceptRejectRule. Дополнительные сведения см. в разделе Ограничения DataTable (ADO.NET).
В следующем примере происходит проверка на наличие строк с ошибками, по возможности устраняются ошибки и отклоняются строки, в которых ошибка не может быть устранена. Следует отметить, что применительно к устраненным ошибкам значение 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();