Utilizzo degli eventi del DataView

È possibile utilizzare l'evento ListChanged di DataView per determinare se una visualizzazione è stata aggiornata a causa dell'aggiunta, eliminazione o modifica di una riga nella tabella sottostante, a causa della modifica dello schema della tabella sottostante tramite l'aggiunta o eliminazione di una colonna oppure a causa di una modifica in una relazione padre o figlio. Se l'elenco di righe visualizzato è stato modificato in modo significativo a causa dell'applicazione di un nuovo criterio di ordinamento o un nuovo filtro, una notifica verrà inviata dall'evento ListChanged.

L'evento ListChanged implementa il delegato ListChangedEventHandler dello spazio dei nomi System.ComponentModel e accetta come input un oggetto ListChangedEventArgs. È possibile determinare il tipo di modifica apportato mediante il valore dell'enumerazione ListChangedType nella proprietà ListChangedType dell'oggetto ListChangedEventArgs. Nel caso di modifiche che implicano l'aggiunta, l'eliminazione o lo spostamento di righe, è possibile accedere al nuovo indice della riga aggiunta o spostata e all'indice precedente della riga eliminata mediante la proprietà NewIndex dell'oggetto ListChangedEventArgs. Nel caso di una riga spostata, è possibile accedere all'indice precedente della riga spostata mediante la proprietà OldIndex dell'oggetto ListChangedEventArgs.

Un evento ListChanged viene esposto anche dal DataViewManager per notificare l'utente nel caso in cui una tabella sia stata aggiunta o rimossa o nel caso in cui siano state apportate modifiche all'insieme Relations del DataSet sottostante.

Nell'esempio di codice seguente viene illustrata l'aggiunta di un gestore di eventi 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);
}

Vedere anche

Creazione e utilizzo di DataView | Classe DataView | Delegato ListChangedEventHandler