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


ПринятьИзменения и ОтклонитьИзменения

После проверки точности изменений, внесенных в данные DataTable, можно принять изменения с помощью метода AcceptChanges, DataRow, DataTable или DataSet, что задает значения Текущей строки в качестве Исходных значений и присвоит свойству RowState значение Unchanged. Принятие или отклонение изменений очищает все сведения 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();  

См. также