1

ページネーションとネストされた並べ替えプラグインを備えた Dojo Enhanced グリッドを使用しています。ここのグリッドで、列ヘッダーの下向き矢印をクリックすると、要素が正しく並べ替えられません。私が持っていると仮定します: xhar amar Memid1 Memid2 1 2

したがって、それらを並べ替えると、次のようになります。 1 2 Memid1 Memid2 amar xhar

そして、私は次の順序にしたい:1 2 amar Memid1 Memid2 xhar それはなぜですか?これを避けるために何ができますか?

4

2 に答える 2

3

ルシアンが言ったように、独自のソート方法を書くことができます。ドキュメントで読めるように、NestedSortingプラグインを追加することでカスタムソートを有効にすることができます。これを行うには、次を追加します。

dojo.require("dojox.grid.enhanced.plugins.NestedSorting");

nestedSorting: trueその後、グリッド オブジェクトに属性を設定するだけで済みます。

並べ替え自体はグリッドではなく、ストアに依存します。カスタム ソートの詳細については、 のドキュメントを参照してItemFileReadStoreください。あなたがしたいことは次のようなものです:

grid.store.comparatorMap = new Object();
grid.store.comparatorMap["col1"] = function(a, b) {
    if (a.toLowerCase() < b.toLowerCase()) {
         return -1;   
    } else if (a.toLowerCase() == b.toLowerCase()) {
        return 0;
    } else {
        return 1;
    }
};

の比較マップを変更したことがわかるようにcol1、これを必要な列に変更する必要があります。関数自体は純粋な JavaScript であり、多くの言語で比較のように機能します。ソート時に文字列 a が文字列 b より前に来る場合は負の数 (-1) を返し、両方の文字列が等しい場合は 0 を返す必要があり、文字列 b が文字列 a より前に来る場合は 1 にする必要があります。両方の文字列の小文字のバリアントを比較します。

以前の JSFiddle (前の質問) を新しい追加で更新し、Dojo 1.6 でテストしました。結果はこちらでご覧いただけます

于 2013-04-02T09:14:29.943 に答える
0

小文字の値のみを持つ列を作成し、この列を使用して並べ替えますが、グリッドにこの列を表示しません。この列を非表示にしてください。小文字は大文字の後に来るように見えるので、すべてを小文字にする必要があります。

もう 1 つの可能性は、独自の並べ替え方法を作成し、それをグリッドに接続することです。

于 2013-04-01T22:31:40.300 に答える