使用 DWR 我是这样做简单分页的[自己记录一下]
DWR 本身未提供分页的功能,所以这部分要自己来实现。如果把后台的所有记录都拉到页面用 JS 分页,那是很不现实的。因此,虽说是 DWR 分页,但还得服务端来支持,由服务端的远程方法只返回当前页所显示的记录,DWR 自己要明确当前是第几页,是否有上一页、下一页。
还是用代码来说明吧,分解为三部分代码:
1. 暴露给 DWR 调用的 Java 的远程方法
2. JS 的 DWR 调用
3. 显示分页导航栏
DWR 要调用的 Java 方法:
JS 的 DWR 调用代码:
显示分页导航栏:
显示的页码导航效果是:
共 115 条记录 第 3/12 页 首 页 上一页 下一页 末 页 永久链接 https://yanbin.blog/dwr-simple-pagination/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
还是用代码来说明吧,分解为三部分代码:
1. 暴露给 DWR 调用的 Java 的远程方法
2. JS 的 DWR 调用
3. 显示分页导航栏
DWR 要调用的 Java 方法:
1/**
2 * 根据预定的条件查询记录 conditions 为查询条件 pageNo 页码,从 1 开始, pageSize 每页的记录数
3 */
4public Map getPageByxtents(Map conditions, int pageNo, int pageSize) throws Exception {
5
6 //获得总记录数
7 Integer recordCount = (Integer) (getSqlMapClient().queryForObject("getCountByExtents", conditions));
8
9 // 总页数
10 int pageCount = (int) Math.ceil(recordCount.doubleValue() / pageSize);
11
12 // pageNO 超界则取接近的边界值
13 pageNo = (pageNo > pageCount) ? pageCount : (pageNo < 1 ? 1 : pageNo);
14
15 int skip = (pageNo - 1) * pageSize;
16
17 //这里用的是 iBatis 返回当前页的数据,其他如 JDBC、Hibernate 持久化方化作相应变化
18 List data = getSqlMapClient().queryForList("getByExtents",conditions, skip, pageSize);
19
20 Map resultMap = new HashMap();
21 resultMap.put("data", data);
22 resultMap.put("recordCount", recordCount);
23
24 //要清楚 JS 得到的数据的结构
25 return resultMap;
26}JS 的 DWR 调用代码:
1//分页获取查询到的记录
2function search(pageNo){
3 var conditions = {magic:'Unmi',start:100};
4 var pageSize = $('pageSize').value;
5
6 //调用前面代码的 getPageByExtends 方法
7 YouDwrRemoteObject.getPageByExtents(conditions,pageNo,pageSize,{
8 callback:function(data){
9 DWRUtil.removeAllRows("listTable"); //移除页面表格中的记录
10 addTableRows(data.data); //把返回的数据添加到表格中,
11 showPageBar(data,pageNo);//调用显示页面导航的函数
12 },
13 errorHandler:function(msg,ex){
14 alert('查询记录错误!')
15 }
16 });
17}显示分页导航栏:
1//显示页码导航
2function showPageBar(data,pageNo){
3
4 var pageCount = Math.ceil(data.recordCount/$('pageSize').value); //总页数
5 var pageStr = "共 " + data.recordCount +" 条记录 第 "+ pageNo+"/"+pageCount + " 页 ";
6 if(pageNo > 1) {
7 pageStr += "<a href='javascript:search(1)'>首 页</a> <a href='javascript:search("+(pageNo-1)+")'>上一页</a> ";
8 }
9 if(pageNo < pageCount){
10 pageStr += "<a href='javascript:search("+(pageNo+1)+")'>下一页</a> <a href='javascript:search("+pageCount+")'>末 页</a> ";
11 }
12
13 pageStr += "&nbsp;";
14 $('pageDiv').innerHTML= pageStr; //"共 115 条记录 第 2/12 页 首 页 上一页 下一页 末 页";
15}显示的页码导航效果是:
共 115 条记录 第 3/12 页 首 页 上一页 下一页 末 页 永久链接 https://yanbin.blog/dwr-simple-pagination/, 来自 隔叶黄莺 Yanbin's Blog
[版权声明]
本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。