- PR -

リストビューのソートについて

1
投稿者投稿内容
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-23 11:29
環境:VS 2003 / C#
リストビューのソートに関する質問です。

リストビューに
 ┌────┬────┐
 | 名前  | 住所  |
 └────┴────┘
の2つのカラムのみ表示しています。
上記カラムヘッダ押下時のソート条件を
 ・名前カラムのヘッダが押下された場合 … 名前ID
 ・住所     〃            … 住所ID
ように、表示しているデータと異なるデータでソートしたいのですが、実装方法が浮かんできません…
リストビューで非表示カラムにIDを持たせようと思ったのですが、
 ・Columns.Wirth=0;
としても、UI操作で表示可能になってしまいました。

上記のように、表示しているデータと異なるデータでソートする場合はどのようにすればいいのでしょうか?

#ちなみに、元データはDataTableで保持しています。(名前、住所、名前ID、住所ID)
 カラムヘッダ押下イベントで、DataTableをソートし、再度リストビューを構築することで、
 一応ソートはできそうですが、処理に時間がかかると思うので…
 
まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2006-01-23 13:40
引用:

リストビューのソートに関する質問です。
表示しているデータと異なるデータでソートしたいのですが、実装方法が浮かんできません…
リストビューで非表示カラムにIDを持たせようと思ったのですが、
 ・Columns.Wirth=0;
としても、UI操作で表示可能になってしまいました。


たとえば表示列が2つでサブアイテムが2つ以上の場合、表示列の分だけ表示されます。
表示列以降に該当するサブアイテムに値を保持すればよいと思います。

引用:

表示しているデータと異なるデータでソートする場合はどのようにすればいいのでしょうか?


ListViewItemSorterプロパティを使用します。
IComparerを実装した独自のクラスを作り、Compareメソッドに独自の並べ替え実装をします。
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-23 15:28
まどか様、回答ありがとうございます。

引用:

たとえば表示列が2つでサブアイテムが2つ以上の場合、表示列の分だけ表示されます。
表示列以降に該当するサブアイテムに値を保持すればよいと思います。



なるほど、
extream
ベテラン
会議室デビュー日: 2005/12/26
投稿数: 83
投稿日時: 2006-01-23 15:29
途中で書き込んでしましました、すいません。。

まどか様、情報提供ありがとうございます。
教えていただいた方法での実装を検討してみます。

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

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