Compartir a través de


Información de errores de fila

Actualización: November 2007

Para evitar responder a errores de fila durante la edición de valores en una DataTable, puede agregar la información de error a la fila para utilizarla más adelante. Para ello, el objeto DataRow proporciona una propiedad RowError en cada fila. Si se agregan datos a la propiedad RowError de una DataRow, la propiedad HasErrors de la DataRow se establece en true. Si la DataRow forma parte de una DataTable y DataRow.HasErrors es true, la propiedad DataTable.HasErrors es también true. Esto afecta también al DataSet al que pertenece la DataTable. Cuando se hagan pruebas para detectar errores, se puede comprobar la propiedad HasErrors para determinar si se ha agregado información de error a alguna fila. Si HasErrors es true, se puede utilizar el método GetErrors de la DataTable para obtener y examinar sólo las filas con errores, como se muestra en el ejemplo siguiente.

Dim workTable As DataTable = New DataTable("Customers")
workTable.Columns.Add("CustID", Type.GetType("System.Int32"))
workTable.Columns.Add("Total", Type.GetType("System.Double"))

AddHandler workTable.RowChanged, New DataRowChangeEventHandler(AddressOf OnRowChanged)

Dim i  As Int32

For i  = 0 To 10
  workTable.Rows.Add(New Object() {i , i *100})
Next

If workTable.HasErrors Then
  Console.WriteLine("Errors in Table " & workTable.TableName)

  Dim myRow As DataRow

  For Each myRow In workTable.GetErrors()
    Console.WriteLine("CustID = " & myRow("CustID").ToString())
    Console.WriteLine(" Error = " & myRow.RowError & vbCrLf)
  Next
End If

Private Shared Sub OnRowChanged( _
    sender As Object, args As DataRowChangeEventArgs)
  ' Check for zero values.
  If CDbl(args.Row("Total")) = 0 Then args.Row.RowError = _
      "Total cannot be 0."
End Sub
DataTable  workTable = new DataTable("Customers");
workTable.Columns.Add("CustID", typeof(Int32));
workTable.Columns.Add("Total", typeof(Double));

workTable.RowChanged += new DataRowChangeEventHandler(OnRowChanged);

for (int i = 0; i < 10; i++)
  workTable.Rows.Add(new Object[] {i, i*100});

if (workTable.HasErrors)
{
  Console.WriteLine("Errors in Table " + workTable.TableName);

  foreach (DataRow myRow in workTable.GetErrors())
  {
    Console.WriteLine("CustID = " + myRow["CustID"]);
    Console.WriteLine(" Error = " + myRow.RowError + "\n");
  }
}

protected static void OnRowChanged(
    Object sender, DataRowChangeEventArgs args)
{
  // Check for zero values.
  if (args.Row["Total"].Equals(0D))
    args.Row.RowError = "Total cannot be 0.";
}

Vea también

Referencia

DataColumnCollection

DataRow

DataTable

Otros recursos

Manipular datos en DataTable