Dorado翻页通常使用的UI是DataTable + Pagepilot。
如果使用的DataSet是AutoSqlDataset,则很容易实现分页,只需要将DataTable和Pagepilot绑定到同一个Dataset就可以了,不需要写任何java和javascript代码。
注意:
在使用AutosqlDataset时,如果要想得到总记录的话,有时候有总记录,但是有的时候没有。
归根到底就是一个配置问题,你只要把项目中home/i18n/smartweb/v2下的client-cn-ZH.properties文件下的
__DATAPILOT_PAGEINFO=当前第${pageIndex}页/共${pageCount}页
修改为
__DATAPILOT_PAGEINFO=第${pageIndex}页/共${pageCount}页(共${possibleRecordCount}条记录).
如果使用的DataSet是CustomDataset,则实现分页会稍稍写一本分java代码,步骤如下:
1.将DataTable和Pagepilot绑定到同一个Dataset。
2.为DataSet创建监听器,覆盖public void afterLoadData(Dataset dataset)方法,实现代码如下:
public void afterLoadData(Dataset dataset)
throws Exception {
//记录集
List ls = new ArrayList(dataset.getPageSize());
int pageIndex = dataset.getPageIndex();
//总页数
//总记录数
DBStatement dbs = new DBStatement();
String countSql = "select count(1) from employee";
dbs.setSql(countSql);
int recordCount = dbs.query().getInt(0);
dbs.close();
String sql = "select * from employee,dept where employee.dept_id=dept.dept_id";
dbs.setSql(sql);
List allResult = dbs.queryForList();
PagingHelper paging = new PagingHelper(dataset.getPageSize(), dataset.getPageIndex(), allResult.size());
List result = allResult.subList(paging.getFromIndex(), paging.getToIndex()); // 当页的记录
for(int i=0; i<result.size(); i++){
VariantSet vs = (VariantSet)result.get(i);
Employee e = new Employee();
e.setEmployee_id(vs.getString("employee_id"));
e.setEmployee_name(vs.getString("employee_name"));
e.setDept_id(vs.getString("dept_id"));
e.setDept_name(vs.getString("dept_name"));
e.setSex(vs.getString("sex"));
e.setBirthday(vs.getDate("birthday"));
e.setMarried(vs.getString("married"));
e.setSalary(vs.getFloat("salary"));
e.setDegree(vs.getString("degree"));
e.setEmail(vs.getString("email"));
e.setWeb(vs.getString("web"));
e.setCmnt(vs.getString("cmnt"));
ls.add(e);
}
dbs.close();
int pageCount = paging.getPageCount();
//设置Dataset
dataset.fromDO(ls);
dataset.setPageCount( pageCount );
}
总结:
1.Dorado的分页是DataSet自己实现的,需要2个重要数据,当前页面所用的DataSet记录和总的记录页数。
2.有了当前页面所用的DataSet记录,DataTable就有了可以展示的数据;有了总的记录数,Pagepilot就可以展示分页标签了。
3.PagingHelper的功能是根据PageIndex、PageSize、TotalRow来计算FromIndex、PageCount、ToIndex。