jqgrid не может загрузить определенную страницу во время перезагрузки данных со стороны сервера - PullRequest
2 голосов
/ 05 июля 2011

Я использую jqgrid 3.8.2, Я пытаюсь использовать приведенный ниже код, чтобы перезагрузить данные со стороны сервера и показать конкретную страницу, например текущую страницу. $ ( "# Mygrid") setGridParam ({Тип данных: JSON}) триггера.. ( "ReloadGrid", [{страница: 5}]); Сетка может правильно загрузить данные с сервера, но всегда показывает первую страницу вместо страницы 5. Кто-нибудь может мне помочь?

С уважением Simon

1 Ответ

11 голосов
/ 05 июля 2011

Полагаю, вы используете параметр loadonce: true. Для перезагрузки данных с сервера вы устанавливаете datatype: в 'json' (я надеюсь, что вы используете setGridParam({datatype:'json'}), а не setGridParam({datatype:json}), как в фрагменте кода из вопроса). После загрузки данных с сервера отобразится первая страница локальных данных .

Чтобы решить проблему, вам придется перезагрузить сетку еще раз внутри loadComplete, но теперь вам следует перезагрузить локальную сетку. Чтобы не иметь петли перезагрузки и разрешить локальный пейджинг, вы должны проверить, является ли текущий datatype 'json':

var myGrid = $("#mygrid"), currentPage = 1;
...
myGrid.jqGrid({
    // all grid parameters and additionally the following
    loadComplete: function() {
        if (this.p.datatype === 'json' && currentPage !== 1) {
            setTimeout(function() {
                myGrid.trigger("reloadGrid",[{page:currentPage}]);
            }, 50);
        }
    }
});
....
currentPage = 5;
myGrid.setGridParam({datatype:'json'}).trigger("reloadGrid",[{page:currentPage}]);

См. Демо здесь .

...