简单的来说就是在setGridParam中加上参数datatype:'json'
,因为loadonce:true后,jqGrid只会加载一次数据,并把datatype改为local。
这样就无法完成于Server的交互通信进行数据搜索和刷新操作,因为全部数据都是提取的本地的。
解决办法:
1、在刷新的时候重新将datatype重新定位到json,也就是指向服务器后,jqGrid就会像服务器发起请求。
例如:
- $("#contentGroupOrderTable").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
以上方法亲测可用
也就是说在点击按钮事件这你可以这样写:
- function searchBtn() {
- $("#contentGroupOrderTable").setGridParam({datatype:'json', page:1}).trigger('reloadGrid');
- $("#contentGroupOrderTable").jqGrid('setGridParam', {page:1, postData: opGrid.getParam()}).trigger("reloadGrid");
- }
但是这样的两句代码在点击按钮事件时需要点击两次才能得到结果,故需要将两行代码整合成一行代码,如下:
- function searchBtn() {
- $("#contentGroupOrderTable").setGridParam({datatype:'json', page:1}).jqGrid('setGridParam', {page:1, postData: opGrid.getParam()}).trigger("reloadGrid");
- }
2、或者在jqGrid version 4.8之后,在trigger中加上参数fromServer:true,
例如:
- $("#contentGroupOrderTable").trigger("reloadGrid", { fromServer: true, page: 1 });