Dorado分页的两种实现方法

Dorado翻页通常使用的UIDataTable + Pagepilot

如果使用的DataSetAutoSqlDataset,则很容易实现分页,只需要将DataTablePagepilot绑定到同一个Dataset就可以了,不需要写任何javajavascript代码。

注意:

在使用AutosqlDataset时,如果要想得到总记录的话,有时候有总记录,但是有的时候没有。

归根到底就是一个配置问题,你只要把项目中home/i18n/smartweb/v2下的client-cn-ZH.properties文件下的

__DATAPILOT_PAGEINFO=当前第${pageIndex}/${pageCount}

修改为

__DATAPILOT_PAGEINFO=${pageIndex}/${pageCount}(${possibleRecordCount}条记录).

 

 

如果使用的DataSetCustomDataset,则实现分页会稍稍写一本分java代码,步骤如下:

1.DataTablePagepilot绑定到同一个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。

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值