【问题标题】:Page 1 of 0 even if jqgrid contains data第 1 页,共 0 页,即使 jqgrid 包含数据
【发布时间】:2019-01-26 05:48:38
【问题描述】:

我正在使用 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 页

【问题讨论】:

    标签: javascript free-jqgrid


    【解决方案1】:

    首先,您永远不应该在循环中填充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
        }
    });
    

    【讨论】:

    • 我已经尝试过你提供的解决方案,但仍然无法正常工作。现在我什至无法在网格中看到数据。它显示第 1 页 0f 0 没有数据。请建议
    • @Stack_User:您应该发布有关您创建的网格的更多信息。例如,如果你使用 TreeGrid,那么你应该遵循the answer,它使用populate 方法而不是reloadGrid。通常,您应该始终包含有关您使用(或可以使用)的 jqGrid 的版本forkfree jqGrid、商业Guriddo jqGrid JS 或版本
    • 我已经编辑了我的 ans 提供的 jqgrid 表定义。我使用的是免费的 jqgrid。这里我没有使用树 jqgrid 它是一个简单的 jqgrid 表
    • @Stack_User:您在测试中出错了。您可以在演示 jsfiddle.net/OlegKi/xegtnq2u 上验证我在回答中描述的方法是否有效。点击“Set 1”或“Set 2”按钮重新加载网格中的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2017-11-08
    • 2011-03-10
    • 1970-01-01
    • 2021-03-13
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多