Страница 1 из 0, даже если jqgrid содержит данные - PullRequest
0 голосов
/ 26 января 2019

Я использую addRowData для добавления данных в сетку при вызове ajax. Он отображает данные правильно, но при разбивке на страницы он отображает 0 0, что неверно.

Я добавил rowNum: 10 в таблицу jqgridсвойство.

$.ajax({
     url: 'getData',
     dataType: 'json',
     success: function (data) {
                $('#grid').jqGrid('clearGridData');
                for (var i = 0; i <= data.length; i++){
                                $("#grid").jqGrid('addRowData', i + 1, data[i]);
                            }
                $('#grid').setGridParam({rowNum:$('#grid').getGridParam('rowNum')});   

                }
        });

Таблица Jqgrid - -

$("#grid").jqGrid(
                {
                    width : 'auto',
                    height : 'auto',
                    colNames : [ 'First Name', 'Last Name'],
                    colModel : [ {
                        name : "firstName",
                        index : "firstName",
                        key:true,
                        width : 120,                                                    
                        search : true,
                        stype : "text"
                    }, {
                        name : "lastName",
                        index : "lastName",
                        width : 120,                                                    
                        search : true,
                        stype : "text"
                    },
                    multiselect : false,
                    iconSet: "fontAwesome",
                    datatype : "local", 
                    loadonce : true,                            
                    rowNum : 10,        
                    rowList : [ 10, 20, 30, 100000000 ],
                    loadtext : '', 
                    loadui : 'disable',
                    toppager:true,
                    pager : '#prowed2',
                    viewrecords : true,
                    loadComplete : function() {
                        $("option[value=100000000]").text('All');
                    },
                    gridComplete : function() {
                    }

                });

Я ожидаю, что данные будут показаны, и нумерация страниц должна отображаться Страница 1 из 1

1 Ответ

0 голосов
/ 26 января 2019

Прежде всего, вы никогда не должны заполнять addRowData в цикле, чтобы заполнить сетку. jqGrid, который имеет datatype: "local", поддерживает параметр data для создания сетки и заполнения ее данными. Секунды, если вы хотите отобразить все данные на одной странице (что является плохой идеей в случае большого количества строк), то вы можете использовать rowNum для достаточно большого значения, например 1000, что будет интерпретироваться как максимум строки, которые будут отображаться на странице.

Чтобы заменить полные данные в существующей сетке, вы можете заменить data и вызвать событие reloadGrid. Для замены данных я бы рекомендовал использовать getGridParam вместо использования setGridParam. Метод getGridParam без параметров возвращает ссылку на все внутренние параметры сетки. Поэтому для замены параметров data необходимо изменить свойство data объекта параметра внутренней сетки:

$.ajax({
    url: 'getData',
    dataType: 'json',
    success: function (data) {
        var $grid = $("#grid"),
            p = $grid.jqGrid("getGridParam"); // get reference to all parameters

        p.data = data; // replace data parameter
        $grid.trigger("reloadGrid", { page: 1 }); // display new data in the grid
    }
});
...