jqGrid不显示JSON数据

我希望将jqGrid用于我正在处理的当前Web项目.问题是,我似乎无法通过网格显示JSON数据.这是网格的初始化代码:

$.fn.loadjqgrid = function(httpposturl){
        $(this).jqGrid({
            url: httpposturl,
            datatype: "json",
            mtype: "GET",
            colNames: ["Video Title", "Description", "Date Taken", "Date Uploaded"],
            colModel: [
               {name:"videoTitle", index:"videoTitle", width:150},
               {name:"videoDescription", index:"videoDescription", width:200},
               {name:"dateTaken", index:"dateTaken", width:150, sortable:true},
               {name:"dateUploaded", index:"dateUploaded", width:150, sortable:true}
            ],
            pager: "#gridpager",
            rowNum: 10,
            viewrecords: true,
            caption: "Video Grid"
        });
    };

Java servlet返回的JSON:

[{"dateTaken":"Wed Feb 16 00:00:00 UTC 2011","videoDescription":"This is a test","videoTitle":"Test Video","dateUploaded":""}]

JSON的格式化方式或网格初始化方式是否有问题?谢谢您的帮助!

最佳答案
为了获得服务器端数据过滤的优势,jqGrid的分页和排序可以更好地处理包含当前页面附加信息的数据(参见here).如果您无法更改生成JSON数据的服务器端,则可以添加loadonce:true参数,然后在本地完成数据的过滤,分页和排序.但首先jqGrid应该能够读取您的数据.

你可以使用我建议here的jsonReader(方法也记录在here):

jsonReader: {
    repeatitems: false,
    root: function (obj) { return obj; },
    page: function (obj) { return 1; },
    total: function (obj) { return 1; },
    records: function (obj) { return obj.length; }
}

在jsonReader中使用函数的方式非常灵活,你几乎可以通过jqGrid读取任何JSON数据.

修改后,您的网格将显示数据:请参阅here.

留下一个小问题. jqGrid需要为每个网格行都有唯一的id. id将被分配给每个< tr>元件.当前整数ids“1”,“2”,…将用作ID,因为在您的JSON数据中找不到ID.如果一列网格可以解释为id,则可以在jsonReader中包含相应的属性,例如id:“videoTitle”.如果您的数据确实没有ID,并且您计划将更多作为页面的一个网格,则可以收到ID冲突.在使用id作为具有两个网格的不同实现的函数的情况下可以解决问题.

转载注明原文:jqGrid不显示JSON数据 - 代码日志