Gestion des événements de DataView

Vous pouvez utiliser l'événement ListChanged du DataView pour déterminer si une vue a été mise à jour. Les mises à jour qui déclenchent l'événement incluent l'ajout, la suppression ou la modification d'une ligne dans la table sous-jacente, l'ajout ou la suppression d'une colonne dans le schéma de la table sous-jacente et une modification d'une relation parente ou enfant. L'événement ListChanged vous avertit aussi si la liste des lignes que vous affichez 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 modification qui a été apportée à l'aide de la valeur d'é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’une modification a été apportée à 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  
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