「.NET DataGrid ソートのイベント」の編集履歴(バックアップ)一覧に戻る
.NET DataGrid ソートのイベント - (2006/06/21 (水) 16:09:27) の編集履歴(バックアップ)
DataGridでキー一覧を表示し、選択行のデータを表示するアプリを作成。
DataGridのタイトル行をクリックすると勝手に一覧がソートされるのだが、選択行は変わらない=選択データが変わる。
DataGridにはなぜかソートに関するイベントがない。いろいろ調べた結果、これで解決した。
ちなみに、ソートでDataGrid.DataSetは変更されないらしく、そのため当然行番号によるアクセスはできなくなる。それもこのCurrencyManagerを使うことにより解決。
' フォームロード(初期化) Private Sub Form1_Load(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '
CurrentManagerのCurrentChangedイベント追加.(選択セル変更やソートのイベント)
Dim cm As CurrencyManager =
CType(DataGrid1.BindingContext(DataGrid1.DataSource), CurrencyManager)
AddHandler cm.CurrentChanged, AddressOf CurrencyManager_CurrentChanged
cm.Position = 0 ShowData(0) End Sub ' 選択セル変更・ソート Private
Sub CurrencyManager_CurrentChanged(ByVal sender As Object, ByVal e As
System.EventArgs) ShowData(DataGrid1.CurrentCell.RowNumber) End Sub '
データ表示 Private Sub ShowData(ByVal index As Integer) Dim cm As
CurrencyManager = CType(DataGrid1.BindingContext(DataGrid1.DataSource),
CurrencyManager) Dim dv As DataView = CType(cm.List, DataView)
MsgBox(dv.Item(index)(0)) End Sub
参考
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=11209&forum=7