首页 > 解决方案 > 第 1 页,共 0 页,即使 jqgrid 包含数据

问题描述

我正在使用 addRowData 将数据附加到 ajax 调用中的网格。它正确显示数据,但在分页时显示第 1 页 0f 0 这是不正确的。

我在 jqgrid 表属性中添加了 rowNum:10 。

$.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 页

标签: javascriptfree-jqgrid

解决方案


首先,您永远不应该填写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
    }
});

推荐阅读