Jquery jsonReader和jqgrid未将json填充到网格中
我有下面的json,我正试图将它显示在我的jqgrid上。我有以下jsonReaderJquery jsonReader和jqgrid未将json填充到网格中,jquery,ajax,json,jqgrid,jsonreader,Jquery,Ajax,Json,Jqgrid,Jsonreader,我有下面的json,我正试图将它显示在我的jqgrid上。我有以下jsonReader jsonReader : { repeatitems: false, root: "abc", page: function (obj) { return 1; }, total: function (obj) { return 1; }, records: function (obj) {
jsonReader : {
repeatitems: false,
root: "abc",
page: function (obj) { return 1; },
total: function (obj) { return 1; },
records: function (obj) { return obj.length; }
},
柱模型:
Json:
只有num、seq和status填充了数据,但没有transTime、sd、total和xys
有什么想法和指针吗?如果您必须读取JSON数据,并且无法在服务器端更改数据,则可以在处理回调之前在客户端对服务器返回的数据进行小的转换。执行此操作并显示以下结果
它使用以下代码
loadonce: true,
jsonReader: { root: "abc" },
beforeProcessing: function (data) {
var root = data.abc, i, item, cItems = root.length;
for (i = 0; i < cItems; i++) {
item = root[i];
item.sd = data.sd;
item.id = $.jgrid.randId();
item.total = data.total;
item.xys = data.xys;
if (item.transTime === null) {
item.transTime = "null";
}
}
}
sd、total和xys不是abc数组的属性。您希望如何在网格中显示项目?是否在相应列的每一行中重复?transTime为空,不会显示为空字符串,就像显示为空字符串一样。谢谢Oleg!我想在JSON中显示返回的所有数据。我想在网格上显示xys、sd、total和abc数组。我知道time和transTime是空的,所以它们不会显示。我希望能够显示xys、sd和总计以及abc阵列最简单的方法是将sd、总计和xys属性作为abc项目的属性。您还可以将transTime:null更改为transTime:null。您可以在服务器端执行此操作吗?如果没有,则可以在beforeProcessing回调中的客户端上更改输入数据。如果您在实现上有问题,我可以向您展示如何做到这一点。谢谢Oleg!你能告诉我怎么做吗?服务器返回的JSON已修复,我无法进行更改。Oleg,我收到以下错误:Uncaught TypeError:无法读取未定义jquery.jqGrid.min.js的属性“id”:66@user3420947:您使用哪个版本的jqGrid?I包括item.id=$.jgrid.randId;行,但不是必需的。如果有错误,请始终使用jquery.jqGrid.src.js而不是jquery.jqGrid.min.js,并在jqGrid的src版本中发布行号。我使用jquery.jqGrid.min.js版本4.2.0。我改为jquery.jqGrid.src.js,但仍然得到未捕获的TypeError:无法读取未定义的jquery.jqGrid.src.js的属性“id”:1281@user3420947:我想您没有使用item.id=$.jgrid.randId;在处理前输入行。我不建议您使用这么旧的jqGrid版本。2011年出版。无论如何,jqGrid 4.2.0也可以使用。如果您的数据仍然存在相同的错误,那么可以在jsonReader中包含cell:false属性。
{
"xys": 3,
"abc": [
{
"time": null,
"num": "1234",
"seq": 2,
"status": "X",
"transTime": null
},
{
"time": null,
"num": "4567",
"seq": 1,
"status": "Y",
"transTime": null
}
],
"sd": "7895",
"total": 5
}
loadonce: true,
jsonReader: { root: "abc" },
beforeProcessing: function (data) {
var root = data.abc, i, item, cItems = root.length;
for (i = 0; i < cItems; i++) {
item = root[i];
item.sd = data.sd;
item.id = $.jgrid.randId();
item.total = data.total;
item.xys = data.xys;
if (item.transTime === null) {
item.transTime = "null";
}
}
}