1

Sencha のストアを選択的にソートしたい。

シナリオ: たとえば、私の店には次の 5 つの要素があるとします。
1. Ad
2. Ab
3. Ac
4. AF
5. Ae

したがって、これらのレコードをリストに表示するときは、「Ac」を常に 0 番目の位置 (1 番目のレコード) に保持し、他の 4 つは次のように並べ替えます:
1. Ac
2. Ab
3. Ad
4. Ae
5. Af

以下のようにストアを並べ替えると、
sorters:{
property: 'record',
direction: 'ASC'
},

通常のソート結果は次のようになります:
1. Ab
2. Ac
3. Ad
4. Ae
5. Af

誰かが助けてくれれば感謝します。ありがとう。

4

2 に答える 2

2

sorterFnの代わりにproperty, を使用して、カスタム関数を使用して並べ替えることができます。

あなたの例では、それは望ましい結果を与えるでしょう:

{
    direction: 'ASC'
    ,sorterFn: function(left, right) {
        var l = left.get('record') || '',
            r = right.get('record') || '';

        // Special case 'Ac' is always first
        if (l === 'Ac') {
            if (r === 'Ac') {
                return 0;
            } else {
                return -1;
            }
        } else if (r === 'Ac') {
            return 1;
        }

        // Defaults to a standard string comparison
        else {
            return l.localeCompare(r);
        }
    }
}
于 2013-06-06T10:19:30.067 に答える
0


上記のシナリオでは、実際にはクライアント側から「Ac」を追加し、サーバーから他のレコードを取得していました。そこで、Sencha sorter を使用してストアをソートする代わりに、次のようにしました。
1. サーバーからデータを取得するクエリを「select xxx, xxx, record from xxxxx order by record」に変更します
。 2. ストアの 0 番目の位置に「Ac」を追加します。
store.add(0,{record:"Ac"})

私は完全に同意しますが、それはシナリオの 1 つであり、私が尋ねた質問に対する答えではありません。

于 2013-06-06T10:12:36.580 に答える