- - PR -
ListViewとDataTableの同期について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-01-22 18:02
ListViewに表示するデータをDataTableで保存しており、For文でループさせることでListViewにデータをAddしようと考えています。
※ DataTableの全カラムをListViewに表示するわけではありません。 このListViewにはソート機能を実装する予定です。 リストをソートさせた場合、ListViewItem.Indexで取得できるインデックスは、ソート後のIndexですよね? となると、リストで選択されたItemがDataTableの何行目かを知る手段がなくなってしまいます。 ListViewで選択された項目に該当するDataRowをDataTableから取得したいのですが、方法が考えつきませんでした。 ListViewとDataTableの行番号の同期を取る方法ってあるのでしょうか? ListViewItemに表示させないデータを保持させることができるのであれば、DataTableにROWNUMでもつけておけばListViewとDataTableの行番号で同期が取れるとは思うのですが、そのようなことって可能なのでしょうか? # Column.Widthを0で非表示にしてみましたが、ユーザ操作で表示可能になってしまいました。。。 詳しい方いたらご教授願いますm(__)m | ||||
|
投稿日時: 2006-01-22 18:13
ListViewItemにTagプロパティがありますから、ここに任意のデータを突っ込むことはできます。いっそDataRowそのものを入れておくのも良いでしょう。
あるいはListViewItemの派生クラスを作るとかね。 個人的にはListViewとDataTableは食い合わせがかなり悪いと思いますが。 | ||||
|
投稿日時: 2006-01-23 10:01
Hongliang様、回答ありがとうございます。
>個人的にはListViewとDataTableは食い合わせがかなり悪いと思いますが。 本当はDataGridを使いたかったのですが、DataGridでは複数行の選択を行う際、ROWヘッダを表示する必要があるようなので… データ管理やソートを考えると、DataGridを使いたいんですが… | ||||
|
投稿日時: 2006-01-23 10:36
ListViewItemのTagプロパティに、DataTable内の"ROWNUM"フィールドの値を格納するようにします。 そうすれば、リストビューで選択されたデータが、DataTableのどのデータかを知ることができるので。 (datatable.filter = "ROWNUM = /*リストビューから取得したROWNUM*/") ありがとうございましたm(__)m |
1