复杂的分页查询

来源:互联网 发布:申通快递单打印软件 编辑:程序博客网 时间:2024/04/26 20:59

步骤一:

分页的html

    共
    <span id="totalReasord"> <s:property value="mes.totalReasord" /></span>条记录&nbsp;
    每页
    <input id="perSize" type="text" name="mes.perSize"
        value="<s:property value= "mes.perSize"/>" />条&nbsp; 第
    <span id="currentPage"><s:property value="mes.currentPage" /></span>页&nbsp;/共
    <span id="totalPage"><s:property value="mes.totalPage" /></span>页
    <input type="text" style="display: none;" name="mes.totalPage"
        value="<s:property value="mes.totalPage" />" />&nbsp;
    <a href="javascript:aSubmit('-2')">首页</a>&nbsp;
    <a href="javascript:aSubmit('-1')">上一页</a>&nbsp;
    <a href="javascript:aSubmit('1')">下一页</a>&nbsp;
    <a href="javascript:aSubmit('2')">最后页</a>&nbsp;&nbsp;转到第
    <input type="text" id="pageIndex" name="mes.pageIndex"
        value="<s:property value= "mes.pageIndex"/>" />页&nbsp;
    <input type="submit" value="Go" />
    <input style="display: none;" type="text" id="subId" name="mes.subId"
        value="0" />

 


步骤二:

创建一个模版类

public class MesTemplate {
    private int totalReasord;  //总记录数
    private int perSize; //每页多少条
    private int  currentPage; //当前是第几条
    private int  totalPage;
    private int pageIndex;
    private int subId;
    private List<CstLost> cstLosts=new ArrayList<CstLost>();  //显示的信息数据


//get set访问起省。。


步骤三:

写js 主要是控制操作是否合法, 如

1:转到第几页提交前检查是否比总页数小? 

2:点击上一页,下一页,首页,末页时页数是否符合要求可以 去查,有数据?否则就不去查,只给友好的提示


function aSubmit(num){
            var currentPage=$("#currentPage").text();
            var totalPage=$("#totalPage").text();
            if(totalPage<=1){
                alert("错误提示:只有一页");
                return;
            }
            if(currentPage==totalPage){
                if(num=="1"||num=="2"){ alert("错误提示:已经是最后一页了"); return ;}
            }else if(currentPage=="1"){
                if(num=="-1"||num=="-2"){alert("错误提示:已经是首页了"); return;}
            }
        $("#subId").val(num);
        document.forms[1].action= "getAllLostByPage";
        document.forms[1].submit();
        }
        
        function sub(){
            var totalReasord=$("#totalReasord").text();
            var perSize=$("#perSize").val();
            var re=totalReasord%perSize==0?totalReasord/perSize:totalReasord/perSize+1;
            var pageIndex=$("#pageIndex").val();
            if(perSize<=0){alert("错误提示:每页的数量不能小于1");return false;}
            if(pageIndex<1||pageIndex>re){
                alert("错误提示:该信息不存在");
                return false;}
            document.forms[1].submit();
        }


运行结果1:


运行结果2:




步骤四:

分页的方法

    public MesTemplate getLostsInfo(MesTemplate mes){
        if (mes == null){
            mes = new MesTemplate(); // 初次加载
            mes.setPageIndex(1);
            mes.setPerSize(2);
        }
        Criteria criteria = getSession().createCriteria(CstLost.class);
        switch (mes.getSubId()) {
        case -2:  //点击首页
            mes.setPageIndex(1);
            break;
        case -1: //点击的是上一页
            mes.setPageIndex(mes.getPageIndex() - 1);
            break;
        case 1:  //点击是下一页
            mes.setPageIndex(mes.getPageIndex() + 1);
            break;
        case 2:  //点击的是末页
            mes.setPageIndex(mes.getTotalPage());
            break;
        }
        mes.setCurrentPage(mes.getPageIndex());

        int totalResord = criteria.list().size();
        int totalSize = totalResord % mes.getPerSize() == 0 ? totalResord
                / mes.getPerSize() : totalResord / mes.getPerSize() + 1;
        mes.setTotalReasord(totalResord);
        mes.setTotalPage(totalSize);

        criteria.setFirstResult((mes.getPageIndex() - 1) * mes.getPerSize());
        criteria.setMaxResults(mes.getPerSize());
        mes.setCstLosts(criteria.list());
        return mes;
        
    }


 


0 0
原创粉丝点击