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


Сведения об ошибке строки

Обновлен: November 2007

Чтобы не отвечать на ошибки строки при изменении значений в таблице DataTable, можно добавить сведения об ошибке в строку для последующего использования. Для этой цели объект DataRow предоставляет свойство RowError для каждой строки. При добавлении данных в свойство RowError объекта DataRow свойство HasErrors объекта DataRow устанавливается в значение true. Если объект DataRow является частью таблицы DataTable, а свойство DataRow.HasErrors имеет значение true, то свойство DataTable.HasErrors также имеет значение true. Это касается также набора DataSet, к которому принадлежит таблица DataTable. Чтобы выявить, были ли добавлены сведения об ошибке в какую-нибудь из строк, можно проверить свойство HasErrors. Если свойство HasErrors имеет значение true, то можно использовать метод GetErrors объекта DataTable для возврата и изучения только тех строк, которые содержат ошибки, как показано в следующем примере.

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

См. также

Ссылки

DataColumnCollection

DataRow

DataTable

Другие ресурсы

Обработка данных в DataTable