要求:在easyui-datagrid中完成paginaton的分页功能。
1.easyui-datagrig的配置
柜员号 | 柜员类型 | 机构号 | 凭证数 | 主件数 | 附件数 | 识别凭证 | 识别成功 | 识别率 | 业务日期 |
---|
pagination="true"数据表格会自动将分页栏置于表下方;toolbar="#tt"表示为数据表格上方加入工具栏,具体样式是id="#tt"的模块决定的。在看下js文件对datagrid的其他配置:
$('#dg').datagrid({ url:'user/queryList.action', pageList: [5,10,20,50,100], pageSize:5});
url为页面刷新datagrid自动的请求,每次请求会向后台传入两个参数:1)page,当前第几页;2)rows,每页显示几条数据。因此在后台需要就收这两条重要信息。
2.struts2的Action配置
public String queryList(){ Listlist = userService.queryList(page,rows) ; pag1 = new Pagination (); pag1.setTotal(userService.getCount()); pag1.setRows(list); return SUCCESS ; }
pag1
pag1为DTO数据传输对象,有total和rows两属性(datagrid要求的json格式。total是信息总条数,rows是信息实体,键值对)
3.hibernate层service分页方法
public ListqueryList(int page, int pageSize) { // TODO Auto-generated method stub String hql = "from User"; Query query = userDao.getSession().createQuery(hql); int beginNum = (page-1)*pageSize; query.setMaxResults(pageSize); query.setFirstResult(beginNum); return query.list(); }
public int getCount() { // TODO Auto-generated method stub String hql = "select count(1) from User"; Query query = userDao.getSession().createQuery(hql); Long cc = (Long) query.uniqueResult(); int count = cc.intValue() ; return count; }
query.setFirstResult(xxx)里面是起始第几条,query.setMaxResults()里面是从起始条开始搜索的条数,即每页的数量。
4.Action的queryList()将从数据库获取的List集合置于DTO对象pag1的rows属性中,List的大小赋值给pag1的total属性,struts2将pag1以json的数据格式返回页面,datagrid自动实现分页,并且每次页数或每页大小被修改时会访问之前的url,并传给后台page和rows两个参数。
(注意:datagrid数据表格发送和接受的中rows表示不同,前者是每页显示数量大小,后者是json数据的数据体)