locked
DataGridのソート(PagedCollectionViewのSortDescription使用)について RRS feed

  • 質問

  • お世話になっております。

    現在、DataGridのソートを制御する際、PagedCollectionViewのSortDescriptionsを操作して実装しています。

    これで表示されているソートは実現できたのですが、新たに問題が発生し、解決できずにいます。

    お知恵を貸していただけないでしょうか。問題は次の2点です。

    1.ソート対象となっている項目のある行の値を変更すると値に応じて自動でソートされてしまう。

    2.ソートが文字列ソートになってしまう為、数値項目が正しくソートできない。

    1点目についてですが、ソートそのものは必要な機能ですが、常にソートされるのは困ります。

    一度ソートさせた後、その状態を保ちつつ、また必要なタイミングでのみソートを実行したいです。

    解決方法をご存じであれば、お教えいただきたいです。

    2点目についてですが、SortDescriptionにPropertyNameとDirectionを指定しただけでは文字列ソートになってしまいます。

    項目によって、数値項目なら数値で、文字列なら文字列でソートしたいです。

    尚、直接編集が行える為、データをあらかじめスペースでパディングする様な方法は取れません。

    解決方法をご存じであれば、教えていただきたいです。

    以上2点です。宜しくお願い致します。

    2012年2月9日 14:22

回答

  • 最近覗いてなくて、時間がたっちゃってるのでもう解決してるかもしれませんが一応。

    >1.ソート対象となっている項目のある行の値を変更すると値に応じて自動でソートされてしまう。

    SortDescriptionが設定されていればそうならざるを得ないのは仕方が無いことだと思います。
    入力によって値が変化した後にSortし直さないと、SortDescriptionが嘘ついてることになってしまいますから・・・。

    なので、質問にあるような動きをさせたいときは下記のようにすればいいと思います。

    ・入力用のプロパティとSort用のプロパティを用意し、SortDescriptionにはSort用のプロパティを指定する。
    ・お好みのタイミングで、入力用プロパティをSort用のプロパティに適用する

    >2.ソートが文字列ソートになってしまう為、数値項目が正しくソートできない。
    >SortDescriptionにPropertyNameとDirectionを指定しただけでは文字列ソートになってしまいます。

    そんなことはないです。
    SortDescriptionで指定したプロパティが文字列型プロパティなのではないですか?
    数値型のプロパティを指定すれば数値でソートしてくれます。

    ☆TFC Software http://www.tfc-software.com/
    ☆プログラミングに関するブログ http://www.tfc-software.com/Blogs.aspx

    • 回答の候補に設定 山本春海 2012年2月23日 6:45
    • 回答としてマーク 山本春海 2012年2月27日 8:44
    2012年2月18日 9:55