layui 树形表格分页功能

layui目前仅有常规表格分页及树形图,未能有树形图分页功能,

 采用另外单独设立分页栏,分页改变时调用方法重载树形树形表格数据。

20230628更

感谢各位的喜欢,因不经常登录,这里贴一下部分代码,以供参考。

后台部分为c# mvc

中心思路是将分页部分和树形图表格分开单独处理,分页数据改变时通过js重新获取树形表格。

前台页面部分

    <div class="layuimini-container">
        <div class="layuimini-main">
            @*<blockquote class="layui-elem-quote">
                    Layui的树形表格treeTable,支持异步加载(懒加载)、复选框联动、折叠状态记忆。<br>
                    <a href="https://gitee.com/whvse/treetable-lay" target="_blank" class="layui-btn layui-btn-danger">treetable-lay</a>
                </blockquote>*@
            <div style="margin: 10px 10px 10px 10px">
                <form class="layui-form layui-form-pane" action="">
                    <div class="layui-form-item">
                        <div class="layui-inline">
                            <label class="layui-form-label">关键字</label>
                            <div class="layui-input-inline">
                                <input type="text" id="keyword" name="keyword" autocomplete="off" class="layui-input">
                            </div>
                        </div>
                        <div class="layui-inline">
                            <button type="submit" id="search" class="layui-btn layui-btn-primary" lay-submit lay-filter="data-search-btn"><i class="layui-icon"></i> 搜 索</button>
                        </div>
                    </div>
                </form>
            </div>
            <div>
                <div class="layui-btn-group">
                    <button class="layui-btn " id="btn-download">下载选中文件</button>
                    <button class="layui-btn " id="btn-fold">全部折叠</button>
                    <button class="layui-btn" id="btn-expand">全部展开</button>
                </div>
                <table id="munu-table" class="layui-table" lay-filter="munu-table"></table>
                <div id="laypages"></div>
            </div>
        </div>
    </div>

前台js部分

        pagefun(1, 15); // 使用 分页来显示
        function pagefun(page, limit) { 

        layui.config({
            base: rootPath + "lay-module/treetable-lay/",  // 配置模块所在的目录
        }).use(['table', 'treeTable', "form", 'laypage'], function () {
            var $ = layui.jquery;
            var table = layui.table;
            var form = layui.form;
            var treetable = layui.treeTable;
            var laypage = layui.laypage;


            //console.log(commonHeader);
            var size = $(".layui-laypage-limits").find("option:selected").val() //分页数目
            var page = $(".layui-laypage-em").next().html(); //当前页码值
            var keywords = $('#keyword').val(); //关键字

            if (typeof (size) == "undefined") {
                size=15
            }
            if (typeof (page) == "undefined") {
                page = 1
            }



            //计算出 分页数
            $.get("/Admin/xxxxx/GetmenuCount", { curr: page, limit: size, keywords: keywords }, function (result) {        

                laypage.render({
                    elem: 'laypages',
                    count: result.dataCount,//数据总数
                    curr: result.pageIndex,//当前页
                    limit: result.pageSize,
                    limits: [15, 20, 30, 40, 50, 60],
                    page: result.pageIndex,
                    layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'],
                    jump: function (obj, first) {
                        if (!first) {//如果不添加这个,会一直请求
                            pagefun(obj.curr, 15); //刷新页面
                        }
                    },
                });
            });


            // 渲染表格
            //layer.load(2);
            var insTb = treetable.render({
                id: 'aaa',
                isPidData: true,
                elem: '#munu-table',
                url: "/Admin/xxxx/TreeList?limit=" + size + "&curr=" + page + "&keywords=" + $('#keyword').val(),
                //headers: commonHeader,
                method: 'POST',
                page: true,
                cols: [
                    { type: 'checkbox', width: "8%", align: 'right' },
                   
                    { field: 'remark', width: "10%", align: 'left', title: '备注' },

                    { field: 'createDate', width: "12%", align: 'center', title: '文件上传时间' },
                    { templet: '#auth-state', width: "15%", align: 'center', title: '操作' }
                ],
                limits: [10, 20, 30, 40, 50, 100],
                limit: 15,
                page: true,
                done: function (res) {
                    layer.closeAll('loading');
                    console.log(res);
                }
            });


}

 后台部分

 获取页码部分

        /// <summary>
        /// 获取分页栏导航数据
        /// </summary>
        /// <param name="query"></param>
        /// <param name="curr"></param>
        /// <param name="limit"></param>
        /// <param name="keywords"></param>
        /// <returns></returns>
    [HttpGet]
        public JsonResult GetmenuCount(PageQueryModel query,int curr, int limit, string keywords)
        {
            if (limit==0)
            {
                limit = 15;
            }
            query.keyword = keywords;
 
            
//你的代码


                var obj = new
            {
                code = 200,
                msg = "ok",
                dataCount= dataCount,//数据总数
                pageCount = (dataCount / limit),//总页数
                pageIndex = curr,//当前页数
                pageSize = limit//每页大小
            };
            return Json(obj);
        }

获取树形图数据

        [HttpPost]        
        public async Task<IActionResult> TreeList(PageQueryModel query,int limit, int curr,string keywords)
        {
            Result<List<CompanyItem>> result = new Result<List<CompanyItem>>();
            PageModel<Company> pageModel = new PageModel<Company>();     
            List<CompanyItem> viweVoteItemList = new List<CompanyItem>();
            
//异常情况处理代码段
//仅供参考,请根据个人实际情况调整。
           
           
            pageModel.data = xxxxxx.ToList();//根据页码和关键词查询父级数据
            pageModel.data.ForEach(m =>
            {
                CompanyItem company = new CompanyItem()
                {
                    CompanyID = m.ID,                  
                };
                company.children = xxxxxx.ToList();//子级数据。
                viweVoteItemList.Add(company);
            });
            result.code = ResultCode.Success;
            result.msg = "成功";
            result.data = viweVoteItemList;
            return Json(result);
        }

因项目中摘抄下来,代码仅保留主体部分,仅供参考,如有问题请留言,我会看到后及时回复。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实现 springboot 和 layui 表格分页的步骤如下: 1. 前端页面:在使用 layui 表格的页面引入 layui.js 和 layui.css 文件。 2. 后端代码:使用 springboot 构建后端服务,通过 HTTP 请求向前端发送数据。 3. 分页参数:在前端页面,使用 layui table 控件定义分页参数,例如:每页显示数量、当前页码等。 4. 分页请求:使用 layui table 控件发送请求到后端,后端通过分页参数从数据库中查询相应的数据并返回给前端。 5. 表格渲染:前端接收到后端返回的数据,使用 layui table 控件将数据渲染到表格中,实现表格分页功能。 6. 翻页事件:使用 layui table 控件监听翻页事件,在事件触发时重新发送请求到后端,实现下一页或上一页的数据加载。 希望以上步骤能帮助您实现 springboot 和 layui 表格分页。 ### 回答2: 在SpringBoot和Layui实现表格分页的过程中,可以通过以下步骤实现: 1. 在后端代码中,首先引入Layui的DataTable插件,使用Layui提供的数据表格组件实现分页效果。 2. 在后端代码中,通过SpringBoot的控制器(Controller)接收前端传递的分页参数,例如当前页码(page)和每页显示数量(limit)。 3. 在后端代码中,根据接收到的分页参数,利用数据库查询语句查询数据表中的数据,并根据传递的分页参数进行分页操作。 4. 将查询到的分页数据返回给前端。 5. 在前端代码中,使用Layuitable模块生成表格,并设置分页参数。 6. 通过JavaScript在前端代码中调用Layuitable模块提供的分页方法,根据后端返回的分页数据动态生成分页组件。 7. 在前端代码中,利用JavaScript将查询到的数据填充到表格的相应位置。 总结来说,SpringBoot和Layui实现表格分页的核心是后端对分页参数的接收和数据的分页操作,以及前端对后端返回的分页数据的处理和分页组件的生成。通过这样的操作,可以实现便捷的表格分页功能。 ### 回答3: 在Spring Boot和Layui结合使用时,实现表格分页可以通过以下步骤来实现: 1. 在后端使用Spring Boot开发接口,查询数据库获取分页数据。可以使用Spring Data JPA或MyBatis等持久层框架进行数据库操作。 2. 定义一个Java类来表示表格数据的结果集,包含总记录数和当前页数据列表。 3. 在后端接口中,根据前端传递的页码和每页显示的记录数,通过查询条件进行筛选,并使用分页查询语句获取对应页码的数据。 4. 将查询结果封装到步骤2中定义的实体类中,并返回给前端。 5. 在前端的HTML页面中引入Layui框架的相关CSS和JS文件。 6. 在HTML页面中使用Layui提供的表格组件,结合异步加载数据的方式进行数据展示和分页操作。 7. 在Layui表格组件中,配置分页参数,包括每页显示的记录数、总记录数以及分页样式等。 8. 在Layui表格组件的回调事件中,监听分页操作,并通过Ajax请求后端接口获取指定页的数据,并将返回的数据展示到表格中。 通过以上步骤,可以实现Spring Boot和Layui结合使用的表格分页功能。需要注意的是,在后端接口中,除了分页查询外,还需要进行条件查询、排序等操作,以满足不同的业务需求。同时,前端页面中还可以添加筛选条件、搜索功能等,以提高用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值