Hantera DataView-händelser
Du kan använda ListChanged händelsen DataView för för att avgöra om en vy har uppdaterats. Uppdateringar som genererar händelsen inkluderar att lägga till, ta bort eller ändra en rad i den underliggande tabellen, lägga till eller ta bort en kolumn i schemat för den underliggande tabellen och en ändring i en överordnad eller underordnad relation. Händelsen ListChanged meddelar dig också om listan över rader som du visar har ändrats avsevärt på grund av tillämpningen av en ny sorteringsordning eller ett filter.
Händelsen ListChanged implementerar ListChangedEventHandler-ombudet för System.ComponentModel namnområdet och tar som indata ett ListChangedEventArgs objekt. Du kan avgöra vilken typ av ändring som har inträffat med uppräkningsvärdet ListChangedType i egenskapen ListChangedType för ListChangedEventArgs-objektet . För ändringar som innebär att lägga till, ta bort eller flytta rader kan du komma åt det nya indexet för den tillagda eller flyttade raden och det tidigare indexet för den borttagna raden med egenskapen NewIndex för objektet ListChangedEventArgs . När det gäller en flyttad rad kan du komma åt det tidigare indexet för den flyttade raden med egenskapen OldIndex för objektet ListChangedEventArgs .
DataViewManager exponerar också en ListChanged-händelse för att meddela dig om en tabell har lagts till eller tagits bort, eller om en ändring har gjorts i relationssamlingen för den underliggande DataSeten.
Följande kodexempel visar hur du lägger till en ListChanged-händelsehanterare .
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);
}