最近在做一个项目的时候,前端用EXTJS的PagingToolbar来做的分页,简单的代码如下:、
new Ext.PagingToolbar( { displayInfo : true, emptyMsg : '没有数据显示', displayMsg : '显示第 {0} 条数据到 {1} 条数据,共 {2} 条数据', store : this.store, pageSize : 15, plugins : [ this.filters ] //过滤页面只显示哪些列 }) filters : new Ext.ux.grid.GridFilters( {// 过滤页面只显示哪些列 encode : true, filters : [ {type : 'string',dataIndex : 'bizname'}, {type : 'string',dataIndex : 'synrdiff'}, {type : 'string',dataIndex : 'SYNRTIME'}, {type : 'string',dataIndex : 'SYNRSUCCESS'}, {type : 'string',dataIndex : 'SYNRFAILED'}, {type : 'string',dataIndex : 'SYNRSIDE'} ] })
后台用的hibernate的分页,简单的代码如下:
Query query = null;
session = super.getSession();
// query = session.createSQLQuery(hql);
query = session.createSQLQuery(hql).addScalar("SSUCCESS", Hibernate.INTEGER).addScalar("SNUM", Hibernate.INTEGER).
addScalar("SYNRFAILED", Hibernate.INTEGER).addScalar("SYNRTIME", Hibernate.DATE).addScalar("SYNRDIFF", Hibernate.STRING);
query.setFirstResult(start);
query.setMaxResults(limit);
list = query.list();
total = list.size();
StringBuffer sb = new StringBuffer("{total:\"");
sb.append(total).append("\",data:[");
//这里只是简单的代码呈现
注意前台设置的pageSize=15,而我后面的total为list的size,所以如果数据大于15条的话,就只显示15条,而小于15条的时候是可以正确的显示的,这个问题开始的时候困挠了我很久,最后,在检查代码时候发现,这里的total是不能为list的size的,只能为SQL语句查询时候的数据量。这里设置了maxResults,所以total最大值为15,所以只能显示为1页。