PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

layui如何实现数据分页功能

王林
王林 转载
2021-02-07 11:03:13 4553浏览

我们先来看下官网的layui.com/demo/table.html" target="_blank">演示画面。

具体代码:

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

相关推荐:layui教程

声明:本文转载于:码农教程,如有侵犯,请联系admin@php.cn删除