Сведения об ошибках строкRow Error Information

Чтобы не отвечать на ошибки строки при изменении значений в таблице DataTable, можно добавить сведения об ошибке в строку для последующего использования.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. Для этой цели объект DataRow предоставляет свойство RowError для каждой строки.The DataRow object provides a RowError property on each row for this purpose. Добавление данных в свойство роверрор объекта DataRow устанавливает HasErrors для свойства DataRow значение true.Adding data to the RowError property of a DataRow sets the HasErrors property of the DataRow to true. Если DataRow является частью DataTable, а DataRow. HasErrors имеет значение true, свойство DataTable. HasErrors также имеет значение true.If the DataRow is part of a DataTable, and DataRow.HasErrors is true, the DataTable.HasErrors property is also true. Это относится и к набору данных , к которому принадлежит DataTable .This applies as well to the DataSet to which the DataTable belongs. При проверке на наличие ошибок можно проверить свойство HasErrors , чтобы определить, были ли добавлены сведения об ошибках в какие бы то ни было строки.When testing for errors, you can check the HasErrors property to determine if error information has been added to any rows. Если параметр HasErrors имеет значение true, GetErrors можно использовать метод объекта DataTable для возвращения и проверки только строк с ошибками, как показано в следующем примере.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.";  
}  

См. такжеSee also