Informazioni sugli errori di rigaRow Error Information

Per evitare di dover rispondere agli errori delle righe mentre si modificano i valori di una DataTable, è possibile aggiungere alla riga le informazioni sugli errori per un uso successivo.To avoid having to respond to row errors while editing values in a DataTable, you can add the error information to the row for later use. A questo scopo, l'oggetto DataRow fornisce una proprietà RowError su ciascuna riga.The DataRow object provides a RowError property on each row for this purpose. L'aggiunta di dati alla proprietà RowError di un DataRow imposta HasErrors la proprietà di DataRow su true.Adding data to the RowError property of a DataRow sets the HasErrors property of the DataRow to true. Se DataRow fa parte di una DataTablee DataRow. HasErrors è true, anche la proprietà DataTable. HasErrors è true.If the DataRow is part of a DataTable, and DataRow.HasErrors is true, the DataTable.HasErrors property is also true. Questo vale anche per il set di dati a cui appartiene la DataTable .This applies as well to the DataSet to which the DataTable belongs. Quando si verificano errori, è possibile controllare la proprietà HasErrors per determinare se le informazioni sull'errore sono state aggiunte a qualsiasi riga.When testing for errors, you can check the HasErrors property to determine if error information has been added to any rows. Se HasErrors è true, è possibile usare il GetErrors metodo dell' oggetto DataTable per restituire ed esaminare solo le righe con errori, come illustrato nell'esempio seguente.If HasErrors is true, you can use the GetErrors method of the DataTable to return and examine only the rows with errors, as shown in the following example.

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.";  
}  

Vedere ancheSee also