某个jsp文件中有如下部分代码
<div class="ibox-content">
<div class="jqGrid_wrapper ">
<table id="table_list" class="forum-info"></table>
<div id="pager_list"></div>
</div>
</div>
js脚本部分
<script type="text/javascript">
$(document).ready(
var params = {status:"",orderId:""};
$("#table_list").jqGrid({
datatype:"json",
url:"getList",
mtype:'POST',
postData:params,
height: gridHeight,
autowidth: true,
shrinkToFit: true,
nowrap: false,
striped: true,
border: true,
colNames:['uuid','orderId','price'],
colModel:[
{name:'uuid',index:'uuid',align:"left",width:50},
{name:'orderId',index:'orderId',align:"left",width:50},
{name:'price',index:'price',align:"left",width:50}
],
pager:'#pager_list',
rownumbers:true,
rowNum:20,
viewrecords:true,
rowList:[20,50,80,100],
multiselect:false,
jsonReader: {
root: "rows",
total: "page",
page: "currpage",
records: "totalrecords",
repeatitems: false
},
caption:"查询结果"
});
);
function search(){
var status = $("#status").val();
var orderId = $("#orderId").val();
var param = {status:status,orderId:orderId};
$("#table_list").jqGrid('clearGridData');
$("#table_list").jqGrid('setGridParam',{
url:"searchDetailList",
datatype:'json',
postData:param,
page:1
}).trigger("reloadGrid");
}
</script>
执行search()的时候,换掉了原来的url,请求是成功的,而且也获得了返回的json数据,但是数据并没有在表格中进行解析,也就是reloadGrid没有加载新数据。如果url不变,还是getList的话,表格中是可以加载解析返回的json数据的。
现在的项目中要求有各种情况下的请求,是否一定要保持url不变呢?改变了URL后的数据怎么可以加载到表格中呢?请求有经验的大神帮忙!!!
执行search()方法的时候,会弹出一个隐藏层,输入选择状态,输入orderId,点击确定,执行方法,隐藏层消失,console里面打印出了后台返回的结果,但是$("#table_list")中没有重新加载新数据。
jqGrid数据的重新加载是不是跟隐藏层有关呢?
找到原因了,是因为后台写接口的同事返回的数据有问题,个别字段的错误导致返回前台的数据不是完整的json,即使用js操作也不是很容易解决。其实,只要数据没有问题,下面的两种方法都是可以实现jqGrid dataGrid的重新加载功能的。
(1)
$("#table_list").setGridParam({
url:"searchDetailList",
datatype:'json',
postData:param,
page:1
}).trigger("reloadGrid");
(2)
$("#table_list").jqGrid('setGridParam',{
url:"searchDetailList",
datatype:'json',
postData:param,
page:1
}).trigger("reloadGrid");
$("#table_list").setGridParam({
url:"searchDetailList",
datatype:'json',
postData:param,
page:1
}).trigger("reloadGrid");