layui实现数据分页功能(ajax异步)

layui实现数据分页功能(ajax异步)

最近项目要使用layUI的分页,看了官方demo感觉还是不太清晰,摸索了一下,现在记录一下。

一:引入layUI的相关资源

<link rel="stylesheet" href="${ctxPath}/vendor/layui-v2.4.5/layui/css/layui.css">
<script src="${ctxPath}/vendor/layui-v2.4.5/layui/layui.js"></script>
<script src="${ctxPath}/vendor/jquery.min.js"></script>//引入jquery包

二:html页面代码

<div class="layui-main g-main">
   <div class="layui-row">
       <div class="layui-col-xs12">
           <table class="layui-table">
               <thead>
                   <tr>
                       <th>积分类型</th>
                       <th>积分原因</th>
                       <th>积分值</th>
                       <th>创建时间</th>
                   </tr>
               </thead>
               
               <tbody>
				//存放分页加载数据
               </tbody>
               
           </table>
           <div id="page"></div>
       </div>
   </div>
</div>

三:定义showRecord()函数异步加载数据

function showRecord(pageNo,pageSize){
    $.get("${ctxPath}/score-record/showRecord",
        {
            pageNo:pageNo,
            pageSize:pageSize
        },
        function (date) {
        	//加载后台返回的List集合数据
            for (var i = 0; i < date.length; i++) {

                var td = $("<td></td>").text(date[i].typeName);
                var td2 = $("<td></td>").text(date[i].operate);
                var td3 = $("<td></td>").text(date[i].score);
                var td4 = $("<td></td>").text(date[i].createTime);
                var tr = $("<tr></tr>").append(td, td2, td3, td4);
                $('tbody').append(tr);
            }
        },
        "json"
    );
}

四:分页js

主要注意下:
count: total 代表总的数据量,
limit 代表每页行数,
curr 代表起始页,但jump函数中的obj.curr取的是当前页数
jump 方法中obj参数可以取到上面的属性和方法
first 为是否首次加载

//加载总页数
var total = "${scoreRecordUtil.totalRecord}";
//先初始化加载首页,十条数据
showRecord(1,10);

layui.use(['laypage','jquery'], function() {

   var laypage = layui.laypage,$ = layui.$;
   
   laypage.render({
       elem: $("#page")
       //注意,这里的 elem 指向存放分页的容器,值可以是容器ID、DOM对象。
       //例1. elem: 'idName' 注意:如果这么写,这里不能加 # 号
	   //例2. elem: document.getElementById('idName')
	   //例3. elem: $("#idName")
       ,count: total //数据总数,从服务端得到
       , limit: 10                      //默认每页显示条数
       , limits: [10, 20, 30]			//可选每页显示条数
       , curr: 1                        //起始页
       , groups: 5                      //连续页码个数
       , prev: '上一页'                 //上一页文本
       , netx: '下一页'                 //下一页文本
       , first: 1                      //首页文本
       , last: 100                     //尾页文本
       , layout: ['prev', 'page', 'next','limit','refresh','skip']
       //跳转页码时调用
       , jump: function (obj, first) { //obj为当前页的属性和方法,第一次加载first为true
           //非首次加载 do something
           if (!first) {
           	   //清空以前加载的数据
               $('tbody').empty();
               //调用加载函数加载数据
               showRecord(obj.curr,obj.limit);
           }
       }
   });
}) 

这篇文章分页使用了Jquery拼接元素进行渲染,感觉比较麻烦而且不够优雅,可以用layui的模板引擎laytpl对分页数据进行渲染,可参考我另一篇博客:layui实现数据分页功能(laytpl模板引擎分页加载)


如果只是table分页查询的话,更推荐使用layui自带的table分页组件,可参考博客:使用layui的table组件自带分页功能(异步,含条件查询)


欢迎访问本文的个人博客链接: https://br-bai.github.io/2019/01/06/LayUI实现数据分页功能(Ajax异步)/

posted @ 2020-11-10 14:23  一天从晚上开始  阅读(938)  评论(0编辑  收藏  举报