как изменить направление сортировки в sortchange EXT

я использую 4.2 EXT, и я должен использовать прослушиватель sortchange для обработки сортировки столбцов, потому что некоторые из столбцов показывают значение при рендеринге.

Таким образом, я должен обрабатывать сортировку в sortchange, она отлично работает, когда я нажимаю значок сортировки в меню в заголовке (ASC/DESC), но когда я нажимаю заголовок для сортировки, направление сортировки всегда показывает «ASC» каждый раз.

Все, что я хочу, это щелкнуть значок сортировки и щелкнуть заголовок, чтобы сортировать нормально

я проверил свой код, но я не устанавливал сортировку по умолчанию со значением «ASC».

я сделал пример в скрипке, пожалуйста, посетите ее

Нажмите здесь!

я узнал, что если я удалю grid.store.sort({ sorterFn: sortingDate, direction: dir}); будет показано правильное направление, но я должен использовать этот метод для сортировки

          var panel = Ext.create('Ext.grid.Panel', {
    id : "Panel",
    store : Ext.create('Ext.data.ArrayStore', {
        fields : fnDefineReqListData()
    }),
    columns : fnDefineReqListColumn()
    scroll : true,
    layout : 'fit',
    autoScroll : true,
    viewConfig : {
        stripeRows : false
    },
    disableSelection : true,
    listeners : {

        sortchange : function(thisGrid, sortinfo) {

            var grid = Ext.getCmp("Panel");
            /*
             * grid.store.sort(storeSorter); return;
             */
            var sorter = grid.store.sorters.getAt(0);
            var sort = sorter.property;
            var dir = sorter.direction;
             **// sorter.direction here always return ASC**

                 grid.store.sort({
                        sorterFn : sortingDate,
                        direction : dir
                    });

        }
});

person Angala Cheng    schedule 19.09.2019    source источник
comment
поделитесь скрипкой, воспроизводящей проблему, и исправьте синтаксические ошибки.   -  person Super Man    schedule 19.09.2019
comment
fiddle.sencha.com/#fiddle/2vfv&view/editor   -  person Angala Cheng    schedule 19.09.2019
comment
Я думаю, вы можете попробовать использовать array.reverse()   -  person Krzysztof Kaczyński    schedule 19.09.2019
comment
@Kanow для сортировки?   -  person Angala Cheng    schedule 19.09.2019
comment
После сортировки массива вы можете использовать этот метод для изменения направления или, например, вы отсортировали его по убыванию, поэтому, если вы используете этот метод, он изменится на восходящий (он перевернет ваш массив, поэтому первый элемент будет последним, последний будет первым)   -  person Krzysztof Kaczyński    schedule 19.09.2019


Ответы (1)


При ручной сортировке вы должны сохранять направление и переключать его. Это решит проблему.

Для примера скрипта я использовал sessionStorage, если вы хотите, вы можете использовать конфиги для сохранения направления и его переключения.

sessionStorage.sortState = sessionStorage.sortState === 'ASC' ? 'DESC' : 'ASC';

grid.store.sort({
    sorterFn : sorting,
    direction : sessionStorage.sortState
});

Вы можете найти работающую скрипту здесь

person Super Man    schedule 19.09.2019
comment
это работает только тогда, когда я нажимаю заголовок, но когда я нажимаю значок короткого замыкания в меню для сортировки, сортировка неверна - person Angala Cheng; 19.09.2019