最近使用flexigrid的时候遇到一个问题:在grid中选中一条记录后跳转到其他页面进行操作(比如说编辑数据),之后再回到grid页面时,希望能够回到操作之前所停留的页数,即要“记住当前分页”。
当前页数的保存可以通过session之类的手段实现,但问题的关键点在于如何手动设定flexigrid的起始页。一开始我根据网上广泛流传的那一份flexigrid参数说明,以为是设置page参数,但结果不起作用。经过查看flexigrid的源代码后才发现,要设置的不是page,而是newp,最后的实现实现方案如下(由于写的时候比较随意,就在jsp上直接写了java代码了,
):
$("#flex1").flexigrid({
//......
newp: <% Object p = request.getSession().getAttribute("currentPage");
if(null != p){
out.print(p.toString());
}else{
out.print(1);
}
%>,
//......
});
那么,为什么是newp,而不是page呢?通过查看flexigrid的源代码就很容易地发现原因:
populate: function () { //get latest data
//......
var param = [
{ name : 'page', value : p.newp }
,{ name : 'rp', value : p.rp }
,{ name : 'sortname', value : p.sortname}
,{ name : 'sortorder', value : p.sortorder }
,{ name : 'query', value : p.query}
,{ name : 'qtype', value : p.qtype}
];
if (p.params){
for (var pi = 0; pi < p.params.length; pi++) param[param.length] = p.params[pi];
}
$.ajax({
type: p.method,
url: p.url,
data: param,
dataType: p.dataType,
success: function(data){g.addData(data);},
error: function(data) { try { if (p.onError) p.onError(data); } catch (e) {} }
});
},
注意第6行,flexigrid在初始化时,默认是把newp参数赋值给ajax请求的参数page的,而grid的page参数,其实仅用于显示当前页码,并不作为请求参数传递到后台。
Flexigrid分页记忆
本文介绍了一种在使用Flexigrid时实现分页状态记忆的方法。通过将当前页数保存在session中,并利用Flexigrid的newp参数而非page参数来设定起始页,从而实现了返回时停留在上次操作的页数。
7605

被折叠的 条评论
为什么被折叠?



