jqGrid默认就提供了分页的功能,其在实现分页的时候有两个隐含的属性与后台交互及page(当前页),rows(每页显示的数据量);当请求下一页的时候请求数据头部默认包含这两个属性,如图:
Page和rows传到后台 ,后台接收。要实现分页后台必须要定义分页相关属性(Action中)
private ShowByPage pager;//一个工具类
private String page = null;
private String rows = null;
private List<Person> list;
工具类ShowByPage:
package com.iflytek.bo;
import java.util.List;
import com.iflytek.pojo.Person;
public class ShowByPage {//省略getter and setter
private String page;//当前页
private Integer totalPage;//总页数
private Integer totalRecords;//总记录数
private String rows;//每页要显示的数据条目
private List<Person>list;//显示数据源
public Integer getTotalPage(){
return totalRecords % Integer.parseInt(rows)== 0 ? totalRecords
/Integer.parseInt(rows) : totalRecords / Integer.parseInt(rows)
+ 1; // 计算总页数
}
}
后台主要代码:
int totalRecord = 80;//此处定义死了,用时从数据库取
int index = (Integer.parseInt(page) - 1) * Integer.parseInt(rows);
int pageSize = Integer.parseInt(rows);
List<Person> list = GetData.getdata(index,pageSize);
pager.setPage(page);
pager.setRows(rows);
pager.setTotalRecords(totalRecord);
pager.setTotalPage(pager.getTotalPage());
pager.setList(list);
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charSet=UTF-8");
printWriter out = response.getWriter();
out.print(JSONUtil.serialize(pager));
out.close();
前台:
$(function(){
$("#grid_id").jqGrid({
url:'doexecute.action?str=id',
mtype: 'post',
datatype:'json',
height:"auto",
width:600,
loadui:"disable",
colNames:['姓名', '年龄', '地址'],
colModel: [
{name:'name',index:'name', width:150, sorttype:"string",editable:true},
{name:'age',index:'age', width:120,sorttype:"int",editable:true},
{name:'address',index:'address',width:150,sorttype:"string",editable:true}
],
pager:'#pager',
rowNum:10,
rowList:[10,20,30],
sortname: 'name',
sortorder:'asc',
viewrecords:true,
jsonReader:{root:"list",
page:"page" ,
total:"totalPage",
records:"totalRecords",
repeatitems : false
},
caption: '员工信息'
});
jQuery("#grid_id").jqGrid('navGrid','#pager',{add:true,edit:true,view:true,del:true,search:true,refresh:true},
{url:'doexecute.action?str=id' ,closeAfterEdit:true, closeOnEscape:true,left:240},
{url:'doexecute.action?str=id',closeAfterAdd:true, closeOnEscape:true,left:240},
{url:'doexecute.action?str=id',closeAfterEdit:true, closeOnEscape:true,top:90, left:240, resize:false, drag:false},
{url:'doexecute.action?str=id',multipleSearch:true,closeAfterSearch:true, closeOnEscape:true, sopt:['le','ge','bw']},
{closeOnEscape:true, left:240}
);
});