jqgrid本地加载分页_jqGrid分页加载json数据无法显示的问题

版本:jqgrid-4.3.2

html代码:

页面js代码:

jQuery("#prdDetailTbl").GridUnload();

jQuery("#prdDetailTbl").jqGrid(

{

url:'getProductOrderDetails.do?prdBranchId='+prdBranchId,

datatype: "json",

colNames:['订单号','结算单价', '数量', '结算总价'],

colModel:[ {name:'orderId',width:55},

{name:'settlePrice',width:90},

{name:'quantity', width:100},

{name:'settleAmount',width:100}

],

jsonReader: {

repeatitems:false,

rows: "rows", // 数据行(默认为:rows)

total: "total", // 总记录数

page: "page", // 当前页

records: "records" // 总记录数

},

rowNum:10,

rowList:[10,20,30],

pager: '#prdPageDiv',

sortname: 'id',

viewrecords: true,

sortorder: "desc"

});

jQuery("#prdDetailTbl").jqGrid('navGrid','#prdPageDiv',{edit:false,add:false,del:false});

action中输出的mime类型json:

this.getResponse().setContentType("application/json;charset=UTF-8");

this.getResponse().setCharacterEncoding("UTF-8");

try {

PrintWriter out = this.getResponse().getWriter();

out.write(json);

out.flush();

out.close();

} catch (Exception e) {

e.printStackTrace();

}

之前在    jsonReader中没有设置repeatitems:false,页面上一直无法显示数据。然后用firebug一步一步调试,在jqgrid源码中有一个方法addJSONData,

这个方法的第1334行:

cur = drows[i];

这个方法中的第1360行代码如下:

if (dReader.repeatitems) {

if(dReader.cell) {cur = $.jgrid.getAccessor(cur,dReader.cell);}

if (!F) { F=orderedCols(gi+si+ni); }

}

如果没有设置repeatitems:false,则cur会被重新赋值,如果cur中没有cell属性值,则$.jgrid.getAccessor(cur,dReader.cell)会返回undefined,这样就导致页面无法显示数据,还报一个obj undefined的错。

总结:jqgrid加载json数据时,需要设置jsonReader的repeatitems:false。当然,如果返回的数据中有cell属性值,应该也可以显示(这种用法没测试过)。

分享到:

2012-06-01 20:22

浏览 5076

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值