Condividi tramite


Informazioni sugli errori delle righe

Per evitare di dover rispondere agli errori delle righe mentre si modificano i valori di una DataTable, è possibile aggiungere alla riga le informazioni sugli errori per un uso successivo. A questo scopo, l'oggetto DataRow fornisce una proprietà RowError su ciascuna riga. L'aggiunta di dati alla proprietà RowError di un DataRow consente di impostare la proprietà HasErrors di DataRow su true. Se il DataRow fa parte di una DataTable e il valore per DataRow.HasErrors è true, anche il valore per la proprietà DataTable.HasErrors sarà true. Queste impostazioni si applicano anche al DataSet a cui appartiene la DataTable. Quando si effettuano verifiche relative agli errori, è possibile controllare la proprietà HasErrors per stabilire se alle righe sono state aggiunte informazioni relative agli errori. Se il valore per HasErrors è true, è possibile utilizzare il metodo GetErrors della DataTable per restituire ed esaminare solo le righe contenenti errori, come mostrato nell'esempio seguente.

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

Vedere anche

Riferimenti

DataColumnCollection

DataRow

DataTable

Altre risorse

Modifica dei dati in una DataTable