Существуют ли решения для группирования по требованию с jqGrid? - PullRequest
1 голос
/ 18 ноября 2011

Я хочу создать jqGrid с группировкой: true, но развернута только первая группа, а другие группы остаются свернутыми, когда развертывание этой группы было свернуто, мне нужно загрузить данные с сервера.

У кого-то есть решение для этого?

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

Ответы [ 2 ]

3 голосов
/ 21 ноября 2011

Для реализации ваших требований вы должны использовать groupCollapse: true, чтобы все группы отображались в свернутом виде. Например, как

grouping: true,
groupingView: {
    groupField: ['invdate'],
    groupCollapse: true,
    groupDataSorted: true
}

, а затем разверните первую группу относительно groupingToggle после заполнения сетки. Например, вы можете использовать следующий код внутри loadComplete:

loadComplete: function () {
    var $this = $(this), firstGroup = $this.find('tr.jqgroup:first');
    if (firstGroup.length > 0) {
        $this.jqGrid('groupingToggle', firstGroup[0].id);
    }
}

Если вы напомните тот факт, как будут создаваться идентификаторы группирующих строк сетки, вы можете уменьшить код до следующего

loadComplete: function () {
    $(this).jqGrid('groupingToggle', this.id + 'ghead_0');
}

См. демо .

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

$("#list").jqGrid('groupingGroupBy', columnName);

Например $("#list").jqGrid('groupingGroupBy', 'ship_via');. Вы должны понимать, что новый groupField будет использоваться только после следующего заполнения тела сетки. Поэтому, если вы хотите определить на сервере порядок группировки и включить его в ответ сервера, вам следует вызвать метод groupingGroupBy внутри beforeProcessing, а не внутри loadComplete.

1 голос
/ 09 января 2012

установите ваш тип данных: 'local'

затем

$ ("# list"). SetGridParam ({datatype: 'json'}). Trigger ('reloadGrid', [{страница: 1}]);

...