Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Um zu vermeiden, dass beim Bearbeiten von Werten in einem DataTable auf Zeilenfehler reagiert werden muss, können Sie der Zeile die Fehlerinformationen zur späteren Verwendung hinzufügen. Das DataRow Objekt stellt eine RowError Eigenschaft für jede Zeile für diesen Zweck bereit. Daten zur RowError-Eigenschaft eines DataRow hinzuzufügen, setzt die HasErrors-Eigenschaft des DataRow auf true. Wenn der DataRow Teil einer DataTable ist und DataRow.HasErrorstrue ist, ist die DataTable.HasErrors-Eigenschaft ebenfalls wahr. Dies gilt auch für das DataSet, zu dem die DataTable gehört. Beim Testen von Fehlern können Sie die HasErrors Eigenschaft überprüfen, um festzustellen, ob Fehlerinformationen zu irgendeiner Zeile hinzugefügt wurden. Wenn HasErrorstrue ist, können Sie die GetErrors-Methode der DataTable verwenden, um nur die fehlerhaften Zeilen zurückzugeben und zu untersuchen, wie im folgenden Beispiel gezeigt.
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.";
}