项目中有用到jqGridTable,但是编辑之后用reloadJqGrid()重新加载之后,有分页的话,页面都会刷新到第一页,不会停留在当前页面。查看原插件函数,发现他有这样一段代码:
//这段代码是jquery.ex.jqgrid.js里面原来封装好的
reloadJqGrid:function(postData){
if($(this).isJqGrid()){
if(!postData) postData = {};
$(this).setGridParam({
datatype:'json',
postData:postData,
page:1//这边的1就是刷新之后页面会刷新到第一页
});
$(this).trigger("reloadGrid");
}
},
我百度查找了一下解决方法:原文是这样的:jqGrid刷新指定页码列表_lth1156187401的博客-优快云博客
就是声明了一个变量,获取当前页,赋值到函数就好了,代码如下:
var p=$(this).jqGrid('getGridParam','page');//获取当前页
完整代码如下:(本来这段代码是完美的,但是一个月后测试测出来一个Bug,是这个修改结果引起的,所以在这个基础上又做了修改)
reloadJqGrid:function(postData){
var p=$(this).jqGrid('getGridParam','page');//获取当前页
if($(this).isJqGrid()){
if(!postData) postData = {};
$(this).setGridParam({
datatype:'json',
postData:postData,
page:p
});
$(this).trigger("reloadGrid");
}
},
首先描述一下出现的bug,就是上面将page:1改成page:p后,列表页的查询功能只有在第一页查的时候是正确的,除第一页外查询,就会出现查询问空的bug,所以进行了修改
reloadJqGrid:function(postData){
var p=$(this).jqGrid('getGridParam','page');//获取当前页,目的:(当勾选操作不在第一页时,操作完还保留到当前页面)
//当达到操作后继续保留在当前页面后,页面搜索功能在除第一页以外的地方搜索就会搜索不到,所以要在搜索时加一个参数:page:1
if(postData!=null && postData!=''){//如果不判断非空,在做别的操作的时候会出现hasOwnProperty,undefined
if( postData.hasOwnProperty("page")){//判断有没有page这个key值
p=postData["page"];
}
}
if($(this).isJqGrid()){
if(!postData) postData = {};
$(this).setGridParam({
datatype:'json',
postData:postData,
page:p
});
$(this).trigger("reloadGrid");
}
},
然后在页面搜索的时候,加一个参数page:1,这样就不会有问题了
$(".fastSearchBtn").on("click", function () {
var name = $("#searchVal").val();
var code = name ? parent.id : null;
var parentId = name ? null : parent.id;
$("#departmentList").reloadJqGrid({
code: code, name: name, "parent.id": parentId,page:1
})
})