Objetos AcceptChange y RejectChange
Después de comprobar la exactitud de los cambios realizados en una DataTable, se pueden aceptar con el método AcceptChanges de DataRow, DataTable o DataSet, que configurará los valores de fila Current de modo que sean los valores Original y establecerá la propiedad RowState en Unchanged. Si se aceptan o se rechazan los cambios, se elimina la información de RowError y se establece la propiedad HasErrors en false. Aceptar o rechazar cambios también puede afectar a la actualización de datos en el origen de datos. Para obtener más información, consulte Actualización de orígenes de datos con DataAdapters.
Si hay restricciones de clave externa en la DataTable, los cambios que se acepten o se rechacen con AcceptChanges y RejectChanges se propagan a las filas secundarias de la DataRow de acuerdo con la ForeignKeyConstraint.AcceptRejectRule. Para más información, vea Restricciones de DataTable.
En el ejemplo siguiente se comprueba si hay filas con errores, se resuelven los errores que haya y se rechazan las filas en las que no se puede resolver el error. Tenga en cuenta que, en los errores que se resuelven, el valor RowError se restablece en una cadena vacía, con lo que la propiedad HasErrors se establece en false. Una vez que se han resuelto o rechazado todas las filas con errores, se llama a AcceptChanges para aceptar todos los cambios de toda la 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();