jqGrid分页加载json数据无法显示的问题

本文介绍了一个关于jqGrid加载JSON数据的问题及解决方法。当jsonReader中未设置repeatitems:false时,页面无法正确显示数据。通过调试发现此设置对数据加载至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

版本:jqgrid-4.3.2

html代码:

<table id="prdDetailTbl"></table> <div id="prdPageDiv"></div>

 

 

 

 


 页面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属性值,应该也可以显示(这种用法没测试过)。

 

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值