リストビューをソートするには?

解決


kensaku  2005-01-12 00:06:20  No: 55973

お世話になります。

環境
OS:XP
VC++.NET 2003 フォームアプリケーション(.NET)

リストビューのソートについて下記のページを参考に作成しましたが、
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformslistviewclasslistviewitemsortertopic.asp 

リストビューのヘッダを押すたびに昇順、降順が切り替わり表示されるようにしたいのですが、どのようにしたらよいでしょうか。

お願いします。


シャノン  2005-01-12 00:37:00  No: 55974

昇順ソート用と降順ソート用の2つの IComparer を作っておいて、ヘッダがクリックされたときに、現在昇順ソートされていれば降順用に、現在降順ソートされていれば昇順用に切り替えればよいのでは?


kensaku  2005-01-12 00:41:42  No: 55975

お返事ありがとうございます。

現在のリストが昇順ソートか降順ソートされているかというのは、プロパティで判断できるのでしょうか。それともフラグを使って判断するのでしょうか。

よろしくお願いいたします。


シャノン  2005-01-12 01:09:36  No: 55976

ListView クラスのメンバをざっと眺めてみてください。
現在のソート順を一発で取得できそうなプロパティがありますか?
Sorting プロパティがありますが、これは違いそうですね。
他には…ありませんね。じゃあ自前で管理しておくしかないのでしょう。

ただ、一口にフラグと言っても、その持ち方は用途によって様々です。
DataView を連結していれば、DataView.Sort プロパティで判断できるかもしれません。
ListViewItemSorter に設定された、IComparer を実装するクラスにプロパティとして持たせても良いでしょう。
ColumnHeader クラスから派生した独自ヘッダオブジェクトを作って、そこにプロパティを設けるという手もあるかもしれません。

方法は一通りではありません。要求に応じて、最適解を探してみてください。


kensaku  2005-01-12 01:36:40  No: 55977

いつもありがとうございます。

あるクラスにpublic static変数を持たせて解決しました。
どうもありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加