Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby uniknąć konieczności reagowania na błędy wierszy podczas edytowania wartości w obiekcie DataTable, możesz dodać informacje o błędzie do wiersza do późniejszego użycia. Obiekt DataRow udostępnia właściwość RowError w każdym wierszu do tego celu. Dodawanie danych do właściwości RowError elementu DataRow ustawia właściwość HasErrors w DataRow na true.
DataRow Jeśli element jest częścią tabeli DataTable, a właściwość DataRow.HasErrors ma wartość true, właściwość DataTable.HasErrors również ma wartość true. To również dotyczy DataSet, do którego należy DataTable. Podczas testowania pod kątem błędów można sprawdzić właściwość HasErrors, aby określić, czy informacje o błędzie zostały dodane do dowolnych wierszy. Jeśli HasErrors to prawda, możesz użyć metody GetErrorsDataTable, aby zwrócić i zbadać tylko wiersze z błędami, jak pokazano w poniższym przykładzie.
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.";
}