jqGrid позволяет только 1 направление сортировки - PullRequest
2 голосов
/ 04 февраля 2012

Значок сортировки jqGrid в заголовке столбца показывает стрелки вверх и вниз. Есть ли способ заставить значок показывать только 1 направление, например, разрешать только возрастающий порядок?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 февраля 2012

В ответ Я показал, как изменить видимость сортировки иконок.Я изменил для вас предыдущее решение, чтобы отображать только значок активной сортировки.

Демонстрация демонстрирует результаты и показывает заголовки, подобные этому:

enter image description here

или это:

enter image description here

Код ниже показывает наиболее важную часть кода:

var $grid = $("#list");

$grid.jqGrid({
    //... other jqGrid options
    sortname: 'invdate',
    sortorder: 'desc',
    onSortCol: function (index, idxcol, sortorder) {
        var $icons = $(this.grid.headers[idxcol].el).find(">div.ui-jqgrid-sortable>span.s-ico");
        if (this.p.sortorder === 'asc') {
            //$icons.find('>span.ui-icon-asc').show();
            $icons.find('>span.ui-icon-asc')[0].style.display = "";
            $icons.find('>span.ui-icon-desc').hide();
        } else {
            //$icons.find('>span.ui-icon-desc').show();
            $icons.find('>span.ui-icon-desc')[0].style.display = "";
            $icons.find('>span.ui-icon-asc').hide();
        }
    }
});
// hide initially the disaabled sorting icon
$('#jqgh_' + $.jgrid.jqID($grid[0].id) + '_' + $.jgrid.jqID(sortName) + '>span.s-ico').each(function () {
    $(this).find('>span.ui-icon-' +
        (sortDirection ? 'asc' : 'desc')).hide();
});

Я пытался использовать $icons.find('>span.ui-icon-asc').show();в начале onSortCol, но в Google Chrome возникают проблемы, поскольку show () устанавливает стиль display: block для элемента <span>.Поэтому я просто удалил стиль display: none.

1 голос
/ 04 февраля 2012

Ознакомьтесь с документацией по событию jqGrid здесь .Вы можете определить свою собственную сортировку, возвращая 'stop' для события onSortCol.Что-то вроде этого должно работать:

onSortCol: function (index, iCol, sortorder) {
    if (sortorder === "desc") {
            return 'stop';
    } else {
            //do regular sorting.
    }
}

Также, если вы делаете это в gridComplete, он должен скрывать нисходящие стрелки:

gridComplete: function () {
    $('.ui-grid-ico-sort.ui-icon-desc.ui-sort-ltr').hide();
}
...