牛骨文教育服务平台(让学习变的简单)
博文笔记

layui实现数据分页功能

创建时间:2017-12-02 投稿人: 浏览次数:8121

官网layui table演示页面:http://www.layui.com/demo/table.html

示例截图:


页面引入layui.css、 layui.js

 

<div id="pTable" style="width: 1200px;">
                  <table class="layui-table" id="layui_table_id" lay-filter="test">
             </table>
             <div id="laypage"></div>
          </div>


 

===================前台js===================

var limitcount = 10;
    var curnum = 1;
    //列表查询方法
    function productsearch(productGroupId,start,limitsize) {
        layui.use(["table","laypage","laydate"], function(){
            var table = layui.table,
                laydate=layui.laydate,
                laypage = layui.laypage;
            table.render({
                elem: "#layui_table_id"
                , url: "<%=path%>/xx/pListQuery.html?pId="+productGroupId+"¤tPage="+ start+"¤tNumber=" + limitsize
                /*, where:{pagename:start,pagelimit:limitsize} //传参*/
                , cols: [[
                    {field: "productId", title: "ID", width: "170", sort: true}
                    , {field: "productName", title: "名称", width: "450"}
                    , {field: "productState", title: "状态", width: "100"}
                    , {field: "effectTime", title: "生效时间", width: "120", sort: true}
                    , {field: "invalidTime", title: "失效时间", width: "120", sort: true}
                    , {field: "productCost", title: "成本", width: "100", sort: true}
                    , {field: "poperation", title: "操作", width: "100",fixed: "right", toolbar: "#barDemo"}
                ]]
                , page: false
                , height: 430
                ,done: function(res, curr, count){
                    //如果是异步请求数据方式,res即为你接口返回的信息。
                    //如果是直接赋值的方式,res即为:{data: [], count: 99} data为当前页数据、count为数据总长度
                    laypage.render({
                        elem:"laypage"
                        ,count:count
                        ,curr:curnum
                        ,limit:limitcount
                        ,layout: ["prev", "page", "next", "skip","count","limit"]
                        ,jump:function (obj,first) {
                            if(!first){
                                curnum = obj.curr;
                                limitcount = obj.limit;
                                //console.log("curnum"+curnum);
                                //console.log("limitcount"+limitcount);
                                //layer.msg(curnum+"-"+limitcount);
                                productsearch(productGroupId,curnum,limitcount);
                            }
                        }
                    })
                }
            })
 
            //监听工具条
            table.on("tool(test)", function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
                var data = obj.data //获得当前行数据
                    ,layEvent = obj.event; //获得 lay-event 对应的值
                if(layEvent === "detail"){
                    viewLableInfo(data.attrId);
                    layer.msg(data.attrId);
                } else if(layEvent === "del"){
                    layer.msg("删除");
                } else if(layEvent === "edit"){
                    layer.msg("编辑操作");
                }
            });
            //常规用法
            laydate.render({
                elem: "#createDate"
            });
            //常规用法
            laydate.render({
                elem: "#processingTime"
            });
 
        });
    }
      var pId = "${pGBean.pgId }";
productsearch(pId, curnum, limitcount);


 

===================业务逻辑层===================

@Override
      public String queryList (HttpServletRequest request) {
           String total = "";
           String pId = request.getParameter("pId");
            int currentNumber = Integer.parseInt(request.getParameter("currentNumber"));
        String currentPage = request.getParameter("currentPage") == null ? "1" : request.getParameter("currentPage");
        //分页处理,显示第一页的30条数据(默认值)
        PageHelper.startPage(Integer.parseInt(currentPage), currentNumber);
        List<PExl> list = exportDao.queryList (pId);
        if(list.size() > 0){
            total = list.get(0).getTotal();
        }
       
        Page page = PageHelper.localPage.get();
        if(page!=null){
            page.setCurrentPage(Integer.parseInt(currentPage));
        }
        PageHelper.endPage();
 
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", 0);
        jsonObject.put("msg", "");
        jsonObject.put("count", total);
        jsonObject.put("data", list);
        //System.out.println("json:----" + jsonObject.toString());
        return jsonObject.toString();
      }


 

===================【sql】===================

其中sql在计算总数totle时可以这么写

COUNT(*) OVER(PARTITION BY 1) AS TOTAL


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。