Utilisation d'événements DataTable

L'objet DataTable fournit une série d'événements pouvant être traités par une application. Le tableau suivant décrit les événements DataTable.

Événement Description
ColumnChanged Se produit lorsqu'une valeur a été insérée avec succès dans une colonne.
ColumnChanging Se produit lorsqu'une valeur a été validée avec succès pour une colonne.
RowChanged Se produit lorsqu'une ligne de la table a été modifiée avec succès.
RowChanging Se produit lors de la modification d'une ligne de la table.
RowDeleted Se produit lorsqu'une ligne de la table a été marquée comme Deleted.
RowDeleting Se produit avant qu'une ligne de la table soit marquée comme Deleted.

L'exemple suivant créé quatre événements : OnColumnChanged, OnColumnChanging, OnRowChanged et OnRowChanging. Chacun de ces événements se produit lors de la modification d'une ligne ou d'une colonne.

AddHandler workTable.ColumnChanged,  New DataColumnChangeEventHandler(AddressOf OnColumnChanged)
AddHandler workTable.ColumnChanging, New DataColumnChangeEventHandler(AddressOf OnColumnChanging)
AddHandler workTable.RowChanged,     New DataRowChangeEventHandler(AddressOf OnRowChanged)
AddHandler workTable.RowChanging,    New DataRowChangeEventHandler(AddressOf OnRowChanging)

Private Shared Sub OnColumnChanged(sender As Object, args As DataColumnChangeEventargs)
  Console.Write(" ColumnChanged: ")
  Console.Write(args.Column.ColumnName & " changed to '" & args.ProposedValue.ToString() & "'" & vbCrLf)
End Sub

Private Shared Sub OnColumnChanging(sender As Object, args As DataColumnChangeEventargs)
  Console.Write("ColumnChanging: ")
  Console.Write(args.Column.ColumnName & " equals '" & args.Row(args.Column).ToString() & _
                    "', changing to '" & args.ProposedValue.ToString() & "'" & vbCrLf)    
End Sub

Private Shared Sub OnRowChanging(sender As Object, args As DataRowChangeEventargs)
  If args.Action <> DataRowAction.Nothing Then
    Dim actionStr As String
    actionStr = System.Enum.GetName(args.Action.GetType(), args.Action)

    Console.WriteLine("   RowChanging: Action = " & actionStr & ", CustID = " & args.Row("CustID").ToString())
  End If
End Sub

Private Shared Sub OnRowChanged(sender As Object, args As DataRowChangeEventargs)
  If args.Action <> DataRowAction.Nothing Then
    Dim actionStr As String
    actionStr = System.Enum.GetName(args.Action.GetType(), args.Action)

    Console.WriteLine("    RowChanged: Action = " & actionStr & ", CustID = " & args.Row("CustID").ToString())
  End If
End Sub
[C#]
workTable.ColumnChanged  += new DataColumnChangeEventHandler(OnColumnChanged);
workTable.ColumnChanging += new DataColumnChangeEventHandler(OnColumnChanging);
workTable.RowChanged     += new DataRowChangeEventHandler(OnRowChanged);
workTable.RowChanging    += new DataRowChangeEventHandler(OnRowChanging);

protected static void OnColumnChanged(object sender, DataColumnChangeEventArgs args)
{
  Console.Write(" ColumnChanged: ");
  Console.Write(args.Column.ColumnName + " changed to '" + args.ProposedValue + "'\n");
}

protected static void OnColumnChanging(object sender, DataColumnChangeEventArgs args)
{
  Console.Write("ColumnChanging: ");
  Console.Write(args.Column.ColumnName + " equals '" + args.Row[args.Column] + 
                    "', changing to '" + args.ProposedValue + "'\n");    
}

protected static void OnRowChanging(object sender, DataRowChangeEventArgs args)
{
  if (args.Action != DataRowAction.Nothing)
    Console.WriteLine("   RowChanging: Action = " + args.Action + ", CustID = " + args.Row["CustID"]);
}

protected static void OnRowChanged(object sender, DataRowChangeEventArgs args)
{
  if (args.Action != DataRowAction.Nothing)
    Console.WriteLine("    RowChanged: Action = " + args.Action + ", CustID = " + args.Row["CustID"]);
}

Voir aussi

Manipulation de données dans un DataTable | DataTable, classe