【问题标题】:jqgrid empty json datajqgrid 空 json 数据
【发布时间】:2013-07-22 10:33:08
【问题描述】:

我使用jqGrid v4.4.5。当网格为空时,显示'Page 1 of 0'。我阅读this answer 但我的问题没有解决。我的 httphandler 发送这个 json 结果

"{\"page\":0,\"records\":0,\"rows\":[],\"total\":0,\"userdata\":null}"

 gridParaf = $("#gridParaf").jqGrid(
    {
        url:"GetLetterInformationHandler.ashx?CurrentUser=" + 1457,
        datatype: 'json',
        width: $("#contentParaf").width() + 410,
        height: $("#contentParaf").height() - 20,
        direction: "rtl",
        colNames: ['IAnsDateTime', 'IAnsState'],
        colModel: [
            { name: 'IAnsDateTime', width: 50, sortable: false, hidden: false, template: CenterTemplate },
            { name: 'IAnsState', width: 20, sortable: false, hidden: false, template: CenterTemplate },
        ],
        rowNum: 20,
        loadonce: true,
        rowList: [5, 10, 20],
        recordpos: "left",
        ignoreCase: true,
        toppager: true,
        viewrecords: true,
        sortorder: "desc",
        scrollOffset: 1,
        editurl: 'clientArray',
        shrinkToFit: true,
        jsonReader:
        {
            repeatitems: false,
        },
        gridview: true,
    });

【问题讨论】:

    标签: jqgrid paging


    【解决方案1】:

    我想正确的 JSON 响应是

    {"page":0,"records":0,"rows":[],"total":0,"userdata":null}
    

    只有调试器以格式显示响应

    "{\"page\":0,\"records\":0,\"rows\":[],\"total\":0,\"userdata\":null}"
    

    在这种情况下你可以尝试使用下面的jsonReader

    jsonReader: {
        repeatitems: false,
        page: function (obj) {
            return obj.page !== undefined && obj.page !== 0 ? obj.page : "0";
        }
    }
    

    希望它能解决您的问题。在the answer 中查看更多信息。

    更新:因为你使用loadonce: true,你应该以同样的方式定义jsonReaderlocalReader

    jsonReader: {
        page: function (obj) {
            return obj.page !== undefined && obj.page !== 0 ? obj.page : "0";
        }
    },
    localReader: {
        page: function (obj) {
            return obj.page !== undefined && obj.page !== 0 ? obj.page : "0";
        }
    }
    

    the demo

    【讨论】:

    • 坦克但不工作:(。为什么重新加载网格时,网格将pageindex = 1传递给服务器?我认为我有问题,因为pageindex为1。我计算服务器中的其他信息“total =(计数+ 0 - 1) / 10" "记录 = 计数" "总计 =(int)Math.Ceiling((float)objectList.Count /(float)numberOfRows);"
    • @ZSH:您必须在jsonReader 之外定义localReader,因为您使用loadonce: true。请参阅我的回答的已更新部分。
    • 我定义了 jsonReader 和 localReader 但不起作用,我设置 loadonce:false 但不起作用。如果我在服务器中设置 pageIndex 的值,jsonReder 中的 obj.page 返回我的值({“page”: "1","re​​cords":"0","rows":[],"total":"0","userdata":null}) 但如果删除 pageIndex 的值(在 json 结果中)总是返回 null.I我很困惑,不知道该怎么办
    • @ZSH:抱歉,我不明白你在pageIndex 下的意思。我也不明白为什么你需要从服务器返回{"page":"1","records":"0","rows":[],"total":"0","userdata":null}。您是否从我的答案的 UPDATED 部分尝试了the demo?你的代码和我的有什么区别?一般来说,您确实可以使用loadonce: true,只需实现jsonReaderlocalReader,并将page 定义为函数。重要的是,函数返回 string "0" 以防您想显示“Page 0 from 0”。
    • 我在 json 结果中删除页面并仅添加 jsonReader 和 loadonce: true 现在它工作正常 :-).Tanks Oleg
    【解决方案2】:

    改变你的 jsonReader:像这样试试

    jsonReader: { repeatitems: false, root: function (obj) {
                            var JSONObject = JSON.parse(obj);
    
                            return JSONObject["rows"];
                        }, page: function (obj) {
                            var JSONObject = JSON.parse(obj);
                            return JSONObject["page"];
    
                        }, total: function (obj) {
                            var JSONObject = JSON.parse(obj);
                            return JSONObject["total"];
    
                        },
                            records: function (obj) {
    
                                var JSONObject = JSON.parse(obj);
    
                                return JSONObject["records"];
    
                            }
                        }
    

    【讨论】:

      猜你喜欢
      • 2011-07-10
      • 1970-01-01
      • 2012-06-20
      • 1970-01-01
      • 2010-09-20
      • 2014-11-17
      • 2011-07-18
      • 1970-01-01
      相关资源
      最近更新 更多