1

この例に似たグループ化でグリッドを実装しようとしています: http://dev.sencha.com/deploy/ext-4.0.0/examples/grid/groupgrid.html ここで、データは列「料理」でグループ化され、これでソートされますそれに応じて列を並べ替えます。この例のコードを 4.2.1 を使用するプロジェクト、または ExtJS 4.2.1 ドキュメント サイトのコード エディターに貼り付けると、ビューはまったく同じで、列 "Name" の並べ替えは機能しますが、機能しません。コラム「料理」で。4.2.1 で列をグループ化して並べ替えを削除しましたか? そうでない場合、それを機能させる方法は?

4

2 に答える 2

1

グループ化列の構成で設定sortable: trueするかdefaults、子列自体の構成として設定します。例えば

{
            // NOTE: these two are grouped columns
            text: 'Close',
            columns: [{
                text: 'Value',
                minWidth: 100,
                flex: 100,
                sortable: true,
                dataIndex: 'ValueHeld_End'
            }, {
                text: 'Total',
                minWidth: 110,
                flex: 110,
                sortable: true,
                dataIndex: 'TotalPnL'
            }]
        }
于 2014-03-21T18:06:40.310 に答える
1

同じ例が 4.2.1 SDK にあり、グループ化された列による並べ替えは機能しなくなりました。私には退行のように聞こえますが、Sencha に通知する必要があります。

編集:

Ext.data.Store#sortそれが変更されたメソッドのコードです。以前のバージョンを復元すると、動作が修正されます (変更された行を見つけるには、私のコメントを参照してください)。

Ext.define(null, {
    override: 'Ext.data.Store'

    ,sort: function(sorters, direction, where, doSort) {
        var me = this,
            sorter,
            newSorters;

        if (Ext.isArray(sorters)) {
            doSort = where;
            where = direction;
            newSorters = sorters;
        }
        else if (Ext.isObject(sorters)) {
            doSort = where;
            where = direction;
            newSorters = [sorters];
        }
        else if (Ext.isString(sorters)) {
            sorter = me.sorters.get(sorters);

            if (!sorter) {
                sorter = {
                    property : sorters,
                    direction: direction
                };
                newSorters = [sorter];
            }
            else if (direction === undefined) {
                sorter.toggle();
            }
            else {
                sorter.setDirection(direction);
            }
        }

        if (newSorters && newSorters.length) {
            newSorters = me.decodeSorters(newSorters);
            if (Ext.isString(where)) {
                if (where === 'prepend') {
                    // <code from 4.2.1>
                    // me.sorters.insert(0, newSorters);
                    // </code from 4.2.1>

                    // <code from 4.2.0>
                    sorters = me.sorters.clone().items;

                    me.sorters.clear();
                    me.sorters.addAll(newSorters);
                    me.sorters.addAll(sorters);
                    // </code from 4.2.0>
                }
                else {
                    me.sorters.addAll(newSorters);
                }
            }
            else {
                me.sorters.clear();
                me.sorters.addAll(newSorters);
            }
        }

        if (doSort !== false) {
            me.fireEvent('beforesort', me, newSorters);
            me.onBeforeSort(newSorters);

            sorters = me.sorters.items;
            if (sorters.length) {

                me.doSort(me.generateComparator());
            }
        }
    }
});
于 2013-05-31T11:15:17.073 に答える