关于如何在jqgrid上显示以下json的任何建议?这里的问题是这来自服务器,我无法修改服务器端代码。
字段123,9785和9785是动态的,这意味着它们每次都会改变而不是静态。那么我如何在jqgrid中使用colModel或beforeProcessing来完成这个呢?
如何在字段123或9737等下获取子数据?
任何代码段都可以帮助我
谢谢!
{
"myJavaMap": {
"123": {
"a": "9716",
"b": 1222652985000,
"c": null,
"d": null,
"e": 6,
"f": 1,
"g": 0,
"h": 0,
"1": "OFFLINE"
},
"9737": {
"a": "9737",
"b": 1222652985000,
"c": null,
"d": null,
"e": 6,
"f": 1,
"g": 0,
"h": 0,
"i": "OFFLINE"
},
"9785": {
"a": "9785",
"b": 1222652985000,
"c": null,
"d": null,
"e": 6,
"f": 1,
"g": 0,
"h": 0,
"i": "OFFLINE"
}
},
"xyz": 99
}
答案 0 :(得分:1)
有几个选项,但jqGrid插件为您提供了root选项,允许您确定JSON元素的根目录。该文档将根定义为where our data begins and all other loops begin from this element.
$("#yourGrid").jqGrid({
jsonReader : {
root: "myJavaMap",
//rest of options
},
});
文档的检索数据部分应该有助于提供更多信息:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data&s[]=root
答案 1 :(得分:0)
在我看来,只需使用jsonReader
定义为函数root
即可解决问题。 root
函数应返回myJavaMap
项的数组。您应该使用loadonce: true
选项,因为服务器返回所有数据而不实现服务器端分页和数据排序。
The demo演示了我的建议并显示以下网格
它用作选项
colModel: [
{ name: "a", key: true, template: intTemplate },
{ name: "b", template: intTemplate },
{ name: "c" },
{ name: "d" },
{ name: "e", template: intTemplate },
{ name: "f", template: intTemplate },
{ name: "g", template: intTemplate },
{ name: "h", template: intTemplate },
{ name: "i" }
],
jsonReader: {
root: function (obj) {
var myRoot = obj.myJavaMap, arr = [], key;
for (key in myRoot) {
if (myRoot.hasOwnProperty(key)) {
arr.push(myRoot[key]);
}
}
return arr;
},
repeatitems: false
},
loadonce: true,
...
其中intTemplate
我定义为
var intTemplate = {formatter: "integer", align: "right", sorttype: "integer",
searchoptions: {
sopt: ["eq", "ne", "lt", "le", "gt", "ge", "nu", "nn", "in", "ni"]
}};