Utilisation des événements du DataView
Vous pouvez utiliser l'événement ListChanged du DataView pour déterminer si une vue a été mise à jour suite à l'ajout, la suppression ou la modification d'une ligne de la table sous-jacente, suite à la modification du schéma de la table sous-jacente par l'ajout ou la suppression d'une colonne, ou suite à un changement dans une relation parente ou enfant. L'événement ListChanged vous avertira aussi si la liste des lignes que vous visualisez a changé de façon significative suite à l'application d'un nouvel ordre de tri ou d'un filtre.
L'événement ListChanged implémente le délégué ListChangedEventHandler de l'espace de noms System.ComponentModel et accepte comme entrée un objet ListChangedEventArgs. Vous pouvez déterminer le type de la modification qui a été apportée à l'aide de la valeur de l'énumération ListChangedType figurant dans la propriété ListChangedType de l'objet ListChangedEventArgs. Pour les modifications qui impliquent l'ajout, la suppression ou le déplacement de lignes, le nouvel index de la ligne ajoutée ou déplacée et l'index précédent de la ligne supprimée sont accessibles via la propriété NewIndex de l'objet ListChangedEventArgs. Dans le cas d'une ligne déplacée, l'index précédent de la ligne déplacée est accessible via la propriété OldIndex de l'objet ListChangedEventArgs.
Le DataViewManager expose également un événement ListChanged pour vous avertir lorsqu'une table a été ajoutée ou supprimée ou lorsqu'un changement a été apporté à la collection Relations du DataSet sous-jacent.
L'exemple de code suivant montre comment ajouter un gestionnaire d'événements ListChanged.
AddHandler custView.ListChanged, New System.ComponentModel.ListChangedEventHandler(AddressOf OnListChanged)
Private Shared Sub OnListChanged(sender As Object, args As System.ComponentModel.ListChangedEventArgs)
Console.WriteLine("ListChanged:")
Console.WriteLine(vbTab & " Type = " & System.Enum.GetName(args.ListChangedType.GetType(), args.ListChangedType))
Console.WriteLine(vbTab & "OldIndex = " & args.OldIndex)
Console.WriteLine(vbTab & "NewIndex = " & args.NewIndex)
End Sub
[C#]
custView.ListChanged += new System.ComponentModel.ListChangedEventHandler(OnListChanged);
protected static void OnListChanged(object sender, System.ComponentModel.ListChangedEventArgs args)
{
Console.WriteLine("ListChanged:");
Console.WriteLine("\t Type = " + args.ListChangedType);
Console.WriteLine("\tOldIndex = " + args.OldIndex);
Console.WriteLine("\tNewIndex = " + args.NewIndex);
}
Voir aussi
Création et utilisation de DataViews | DataView, classe | ListChangedEventHandler, délégué