NutzCN Logo
问答 请问一个关于分页的问题
发布于 2781天前 作者 qq_4e935937 2001 次浏览 复制 上一个帖子 下一个帖子
标签:

我项目前台的页面用的miniui的datagrid,后台通的sqlserver数据库。我现在用教程离得分页得方法以后,在前台展示的时候,分页无效,但是分页菜单的数据都正常

@IocBean(args = {"refer:dao"})
public class BaseModuleService extends Service<BaseModule> {
		public BaseModuleService(Dao dao) {
				super(dao);
		}
		
		public QueryResult findAllModuleList(String encode,String fullname,Pager pager){
			Cnd wherecondition=Cnd.where(new Static("1=1"));
			if(!"".equals(encode)&&encode!=null){
				wherecondition.and("encode","like", "%"+encode+"%");
			}
			if(!"".equals(fullname)&&fullname!=null){
				wherecondition.and("fullname","like", "%"+fullname+"%");
			}
			QueryResult qr=new QueryResult();
			List<BaseModule> list = dao().query(BaseModule.class, wherecondition);
			qr.setList(list);
			pager.setRecordCount(dao().count(BaseModule.class, wherecondition));
	        qr.setPager(pager);
			return qr;
			
		}
20 回复
List<BaseModule> list = dao().query(BaseModule.class, wherecondition, pager);

请问那后面的那两行代码还要吗
pager.setRecordCount(dao().count(BaseModule.class, wherecondition));
qr.setPager(pager);

public QueryResult findAllModuleList(String encode,String fullname,Pager pager){
Cnd wherecondition=Cnd.where(new Static("1=1"));
pager.setRecordCount(dao().count(BaseModule.class, wherecondition));
if(!"".equals(encode)&&encode!=null){
wherecondition.and("encode","like", "%"+encode+"%");
}
if(!"".equals(fullname)&&fullname!=null){
wherecondition.and("fullname","like", "%"+fullname+"%");
}
QueryResult qr=new QueryResult();
List list = dao().query(BaseModule.class, wherecondition,pager);
qr.setList(list);
//
qr.setPager(pager);
return qr;

    }

现在改成这样以后,只显示第一页的20条记录,后面的记录没有,总共应该75条记录的

那你理解的分页是啥?页面分页而非数据库分页?

应该是总共75条记录,当前第1页,共4页,页面记录数20
而这段代码执行完以后是总共20条记录,当前第一页,共1页,页面记录数20

Strings.isNotBlank(encode)

我写给你的 服务器分页, 就是数据库分页, 返回给前端的只有当前页的内容, 默认就是20条

我说的那种分页能实现吗

现在问题是分页菜单里显示的是只有1页,但实际是应该有4页,

你先搞清楚, 返回什么内容才能显示4页, 把Pager打印出来看看嘛, 返回之前.

我想问一的是,为什么我的分页菜单里显示的是总共20条记录,当前第一页,共1页,页面记录数20,但是在后台java代码里,下断点的时候,pager对象里显示的是size: 20, total: 75, page: 1/4

前端代码发一下

@wendal 大佬,分页列表查询时,方法返回QueryResult,控制层应该返回什么类型,列表才可以接收?

    @At
    @Ok("json")
    public Object queryQuotaAllotList(@Param("year")String year,@Param("region")String region,@Param("quotaName")String quotaName, @Param("..")Pager pager){

        return ssProjectManage.listIssuedDefine(year,region,quotaName,pager);//返回QueryResult
    }

返回json看结构

@wendal 上面的方法返回的就是@Ok("json"),QueryResult不是包含list和pager吗,页面列表没有数据啊

<div id="log_grid" name="log_grid" class="mini-datagrid"
         style="width: 100%; height: 292px;" allowCellSelect="true"
         multiSelect="true" url="<%=request.getContextPath()%>/ssProjectAt/queryQuotaAllotList">
        <div property="columns">
            <div field="id" name="id" width="0" headerAlign="center" allowSort="false"></div>
            <div field="year" name="year" width="25%" headerAlign="center" align="center" allowSort="true" >
         1
            </div>
            <div field="region" name="region" width="25%" headerAlign="center" align="center" allowSort="true" >
             2
            </div>
            <div field="quotaName" name="quotaName" width="25%" headerAlign="center" align="center" allowSort="true">
              3
            </div>
            <div field="quotaNum" name="quotaNum" width="25%" headerAlign="center" align="center" allowSort="true" >
               4
            </div>
            <div field="" name="" width="25%" headerAlign="center" align="center" allowSort="true" >
                5
            </div>
            <div field="" name="" width="25%" headerAlign="center" align="center" allowSort="true" >
               6
            </div>
            <div field="do" name="do" headerAlign="center" width="25%" align="center">
                操作
            </div>
        </div>
    </div>
</fieldset>
<script type="text/javascript">
    mini.parse();
    var grid = mini.get("log_grid");
    grid.load();
</script>

@wendal 大佬,我貌似也遇到上面仁兄说的问题,数据库总数据条数140条,QueryResult:list里面只有前10条,pager里面的条数140条,14页。

sql对吗?有无分页在里面

@wendal

 public QueryResult listIssuedDefine(String year, String region, String quotaName, Pager pager){
        Cnd cnd = Strings.isBlank(year)? null : Cnd.where("year","=","year");
        cnd = Strings.isBlank(region)? null : Cnd.where ("region","=","region");
        cnd = Strings.isBlank(region)? null : Cnd.where ("quotaName","=","quotaName");
        QueryResult qr = new QueryResult();
        qr.setList(dao.query(DfjgQuotaAllotDO.class,cnd,pager));
        pager.setRecordCount(dao.count(DfjgQuotaAllotDO.class,cnd));
        qr.setPager(pager);
        return qr;
    }

如果输出的SQL合符预期,就没问题啦

添加回复
请先登陆
回到顶部