- PR -

ListViewとDataTableの同期について

1
投稿者投稿内容
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 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
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-01-22 18:13
ListViewItemにTagプロパティがありますから、ここに任意のデータを突っ込むことはできます。いっそDataRowそのものを入れておくのも良いでしょう。
あるいはListViewItemの派生クラスを作るとかね。

個人的にはListViewとDataTableは食い合わせがかなり悪いと思いますが。
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-23 10:01
Hongliang様、回答ありがとうございます。

>個人的にはListViewとDataTableは食い合わせがかなり悪いと思いますが。

本当はDataGridを使いたかったのですが、DataGridでは複数行の選択を行う際、ROWヘッダを表示する必要があるようなので…
データ管理やソートを考えると、DataGridを使いたいんですが…
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-23 10:36
引用:

Hongliangさんの書き込み (2006-01-22 18:13) より:
ListViewItemにTagプロパティがありますから、ここに任意のデータを突っ込むことはできます。いっそDataRowそのものを入れておくのも良いでしょう。



ListViewItemのTagプロパティに、DataTable内の"ROWNUM"フィールドの値を格納するようにします。
そうすれば、リストビューで選択されたデータが、DataTableのどのデータかを知ることができるので。
(datatable.filter = "ROWNUM = /*リストビューから取得したROWNUM*/")

ありがとうございましたm(__)m
1

スキルアップ/キャリアアップ(JOB@IT)