ビューが更新されたかどうかを確認するには、DataView の ListChanged イベントを使用します。ビューの更新の理由としては、基になるテーブルでの行の追加、削除、または変更、列の追加または削除による基になるテーブルのスキーマの変更、または親子関係での変更があります。さらに、表示している行のリストが、新しい並べ替え順序またはフィルタの適用により大幅に変更された場合、ListChanged イベントはそのことも通知します。
ListChanged イベントは、System.ComponentModel 名前空間の ListChangedEventHandler デリゲートを実装し、ListChangedEventArgs オブジェクトを入力としてとります。発生した変更の内容を確認するには、ListChangedEventArgs オブジェクトの ListChangedType プロパティの ListChangedType 列挙値を使用します。行の追加、削除、または移動による変更の場合、追加された行または移動された行の新しいインデックスと削除された行の古いインデックスには、ListChangedEventArgs オブジェクトの NewIndex プロパティを使用してアクセスできます。移動された行の場合、移動前の古いインデックスへアクセスするには ListChangedEventArgs オブジェクトの OldIndex プロパティを使用します。
DataViewManager は、さらにテーブルが追加または削除された場合に、または基になる DataSet の Relations コレクションが変更された場合に、そのことを通知するために ListChanged イベントを公開します。
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);
}
参照
DataView の作成と使用 | DataView クラス | ListChangedEventHandler デリゲート