Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Pour éviter d’avoir à répondre aux erreurs de ligne lors de la modification des valeurs dans un DataTable, vous pouvez ajouter les informations d’erreur à la ligne pour une utilisation ultérieure. L’objet DataRow fournit une RowError propriété sur chaque ligne à cet effet. L’ajout de données à la propriété RowError d’un DataRow configure la propriété HasErrors du DataRow à true. Si l’élément DataRow fait partie d’une DataTable et que DataRow.HasErrors a la valeur true, la propriété DataTable.HasErrors est également vraie. Cela s’applique également au DataSet auquel le DataTable appartient. Lorsque vous testez pour détecter des erreurs, vous pouvez vérifier la HasErrors propriété pour déterminer si des informations d’erreur ont été ajoutées à n'importe quelle ligne. Si HasErrorsc’est vrai, vous pouvez utiliser la GetErrors méthode de retour DataTable et examiner uniquement les lignes avec des erreurs, comme illustré dans l’exemple suivant.
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.";
}