Aracılığıyla paylaş


Satır Hata Bilgileri

içindeki DataTabledeğerleri düzenlerken satır hatalarına yanıt vermek zorunda kalmamak için, hata bilgilerini daha sonra kullanmak üzere satıra ekleyebilirsiniz. DataRow nesnesi bu amaçla her satırda bir RowError özellik sağlar. RowError özelliğine veri eklemek, bir DataRow nesnesinin HasErrors özelliğini true olarak ayarlar. DataRow bir DataTable'ın parçasıysa ve DataRow.HasErrorstrue ise, DataTable.HasErrors özelliği de doğrudur. Bu, ait olduğu DataSet için de DataTable geçerlidir. Hataları test ederken, hata bilgilerinin herhangi bir satıra eklenip eklenmediğini belirlemek için HasErrors özelliğini denetleyebilirsiniz. HasErrors eğer true ise, yalnızca hata içeren satırları döndürmek ve incelemek için DataTable'ün GetErrors yöntemini kullanabilirsiniz, aşağıdaki örnekte gösterildiği gibi.

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

Ayrıca bakınız