layui表格配合自定义分页组件的使用

文章讲述了在项目中使用layui表格组件配合分页组件的经历,提到默认分页在数据量大时性能问题,介绍了如何实现分页查询并刷新动态总数的方法,包括定义函数和调整分页组件位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近的项目中使用了layui组件,整体用起来还是不错的,这里记录一下表格组件配合分页组件的使用。layui的表格组件还是挺好用的,有自带的分页功能,在数据量小的情况下还是够用的,但是数据量稍微多一点就会显得很卡。所以还是得做分页查询,下面就讲一下使用步骤。

  1. layui的分页组件没办法主动刷新总数,但是总数在操作的时候很可能会是动态的,这里需要先定义一个函数,每次都会重新渲染分页组件所以可以刷新总数
function flushPage(num, curr, limit) {
    layui.use(['laypage', 'form', 'layer', 'table'], function () {
        var form = layui.form;
        var table = layui.table;
        laypage = layui.laypage
            , layer = layui.layer;
        laypage.render({
            elem: 'demo-laypage-all'	//渲染的对象
            , count: num		//注意这里的count是数据条数
            , limit: limit//分页数
            , limits: [10, 25, 50, 100]		//每页显示8条数据
            , layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] // 功能布局
            , curr: curr	//当前高亮页
            , jump: function (obj, first) { //obj为当前页的属性和方法,第一次加载first为true
                //do SomeThing
                if (!first) {	//非首次加载
                    // console.log(obj.curr);
                    var data = form.val('operationLog-filter');
                    operationLogqueryObj.pageNum = obj.curr
                    operationLogqueryObj.pageSize = obj.limit
                    operationLogqueryObj.beginTime = data.beginTime
                    operationLogqueryObj.endTime = data.endTime
                    operationLogqueryObj.businessType = data.businessType
                    let res = api_logManagement_operateList(operationLogqueryObj)
                    if (res.code == 200) {
                        OperationLogData = res.rows
                        layui.table.reload('ID-table', {
                            data: OperationLogData,
                        })
                        flushPage(res.total, obj.curr, obj.limit)
                    }
                }
            }
        });
    });
}

flushPage(num, curr, limit)num是数据总条数,curr是当前页,limit是当前页数据条数,operationLogqueryObj是定义在外面的对象用于筛选条件
2. 定义好后直接在代码里调用即可,我这里是默认第一次加载每页分10条数据

flushPage(res.total, 1, 10)
  1. 还有分页组件的使用还没说,这里在加载表格时将自带的分页page设置为fasle禁用掉
table.render({
            height: 600,
            elem: '#ID-table'
            , cols: [[ //标题栏
                { field: 'title', title: '系统模块' },
                { field: 'operName', title: '操作人员', },
                {
                    field: 'businessType', title: '操作类型', templet: function (d) {
                        return `<span>${d.businessType == 0 ? '其它' : ""}</span>
                        <span>${d.businessType == 1 ? '新增' : ""}</span>
                        <span>${d.businessType == 2 ? '修改' : ""}</span>
                        <span>${d.businessType == 3 ? '删除' : ""}</span>
                        <span>${d.businessType == 4 ? '授权' : ""}</span>
                        <span>${d.businessType == 5 ? '导出' : ""}</span>
                        <span>${d.businessType == 6 ? '导入' : ""}</span>
                        <span>${d.businessType == 7 ? '强退' : ""}</span>
                        <span>${d.businessType == 8 ? '生成代码' : ""}</span>
                        <span>${d.businessType == 9 ? '清空数据' : ""}</span>`;
                    }
                },
                { field: 'operIp', title: 'IP地址' },
                {
                    field: 'status', title: '操作状态', sort: true, templet: function (d) {
                        return `<span>${d.status == "0" ? "正常" : "异常"}</span>`;
                    }
                }
                , { field: 'operTime', title: '操作时间', sort: true, }
            ]]
            , toolbar: '#toolbarDemo'
            , data: OperationLogData
            , even: false
            , page: false // 是否显示分页
            , limits: [10, 25, 50, 100]
            , limit: 10 // 每页默认显示的数量
            , pagebar: '#ID-table-demo-page-pagebar',
        });
  1. 在表格底下定义自定义分页组件
<script type="text/html" id="ID-table-demo-page-pagebar">
                        <div id="demo-laypage-all"></div>
 </script>
  1. 表格加载时将pagebar设置为’#ID-table-demo-page-pagebar’就可以了,不过这样分页组件会默认靠右,我们可以稍微调整一下这样就可以靠左了
.layui-table-pagebar {
    float: left;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旭寒ls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值