Layui的 TreeGrid 树形显示数据加分页功能

layui treegrid 在官网人已经有人改造出来了树形显示数据,https://fly.layui.com/extend/treeGrid/,在此基础上加上了分页功能,根据系统需求也调整了样式,我的是.NET开发,Java的可能要改改有些细节的地方

示例:第一页

第二页: 

关键代码: 

    <%--引用必要的js和css文件--%>
    <script src="CC/jquery-3.3.1.js"></script>
    <script src="CC/treegrid/design/layui.js"></script>
    <link href="CC/treegrid/design/css/layui.css" rel="stylesheet" /> 
 
    <%--定义treeTableid--%>
    <div>
        <table id="treeTable" lay-filter="treeTable" ></table>
    </div>
    
    <%--渲染和加载treeGrid--%>
    <script>
        var editObj = null, ptable = null, treeGrid = null,
            tableId='treeTable',layer = null, element=null;
        layui.config({
            base: 'CC/treegrid/design/extend/'
        }).extend({
            treeGrid: 'treeGrid'
        }).use(['treeGrid', 'layer', 'element'], function () {
            treeGrid = layui.treeGrid;
            element = layui.element;
            layer = layui.layer;
            ptable = treeGrid.render({
                id: tableId
                , elem: '#' + tableId
                , idField: 'CaID'
                , url: 'AjaxHelper/BooksCataLog.ashx'//后台访问路径,返回Json。具体格式后面代码介绍到
                , cellMinWidth: 100
                , treeId: 'CaID'//树形id字段名称
                , treeUpId: 'TID'//树形父id字段名称
                , treeShowName: 'CaName'//以树形式显示的字段
                , limit: 10
                , method: "post"
                , cols: [[
                    { field: 'NUM', width: 40, title: '序号', align: 'center' }
                    , {
                         field: 'CaName', width: 350, title: '单元目录', templet: function (d) {
                             return "<a id='tip_" + d.CaID + "'  onmouseover='MouserOver(\"" + d.BooksName + "\",\"tip_" + d.CaID + "\");' onmouseout='MouseOut();'>" + d.CaName + "</a>";
                         }
                     }
                    , { field: 'CaNum', title: '目录序号' }
                    , { field: 'CaType', title: '课文类型', width: 70 }
                    , { field: 'author', title: '作者', width: 70 }
                    , { field: 'Page', title: '页码',width:40, templet: function (d) { return d.Page == 0 ? "" : d.Page;  } }
                    , { field: 'Viid', title: '观看权限', width: 70, align: 'center', templet: function (d) { return d.Viid == "1" ? "VIP" : "免费"; } }
                    , { field: 'State', title: '是否显示', width: 70, align: 'center', templet: function (d) { return d.State == "1" ? "是" : "否"; } }
                    , { title: '操作', align: 'center',width: 70/*toolbar: '#barDemo'*/
                        , templet: function (d) {
                            return '<a class="layui-btn layui-btn-normal layui-btn-sm" lay-event="edit">修改</a>';
                        }
                    }
                    , { type: 'checkbox', width: 40 }
                ]]
                , page: true//显示分页
            });

            treeGrid.on('tool(' + tableId + ')', function (obj) {
                if (obj.event === 'edit') {//编辑
                    Edit(obj);
                }
            });
        });
        

        //重新加载方法,这里的textid是传入后台的参数id,
        function reloadTreeGrid(textId) {
            treeGrid.reload(tableId, { where: { textid: textId } });
        }
</script>

下面为后台返回的json字符串格式,我的数据在后台就做了分页查询,本来返回的10条数据,这里贴出两条示例数据, data和count是必须要有的,

{
    "msg": "",
    "code": 0,
    "data": [{"CaID":"412","CaNum":"","CaName":"第一章","TID":"0","TextID":"1849","CaType":"","author":"","Page":"0","Viid":"1","State":"1","BDid":"100","level":"1","VrID":"","VrName":"","BooksName":"测试课文","NUM":"1"},
            {"CaID":"415","CaNum":"1","CaName":"登高","TID":"412","TextID":"1849","CaType":"课文类型","author":"杜甫","Page":"34","Viid":"1","State":"1","BDid":"101","level":"2","VrID":"","VrName":"","BooksName":"测试课文","NUM":"2"
            }],
   "count":"172"}

 dltable.js里面根据自己需求修改了树形显示的样式,如果显示不正确可以调整下这里

 

好的,以下是一个简单的例子,使用 layui treeGrid 实现多级数据的全选复选框: ```html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>layui treeGrid 多级数据全选复选框</title> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css"> </head> <body> <div class="layui-container"> <div class="layui-row"> <div class="layui-col-md12"> <table class="layui-hide" id="demo" lay-filter="test"></table> </div> </div> </div> <script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js"></script> <script> layui.use(['treeGrid', 'form'], function(){ var treeGrid = layui.treeGrid, form = layui.form; // 数据 var data = [{ id: 1, name: '节点1', children: [{ id: 2, name: '节点2', children: [{ id: 3, name: '节点3' }, { id: 4, name: '节点4' }] }] }, { id: 5, name: '节点5', children: [{ id: 6, name: '节点6' }, { id: 7, name: '节点7' }] }]; // 渲染表格 treeGrid.render({ elem: '#demo', data: data, treeId: 'id', treeUpId: 'pid', treeShowName: 'name', cols: [[ {type: 'checkbox'}, {field: 'name', title: '名称'} ]], done: function(res, curr, count){ // 表格渲染完成后,绑定全选复选框事件 $('.layui-table-header th[data-field="0"] input[type="checkbox"]').on('click', function(){ var isChecked = $(this).prop('checked'); $('tbody input[type="checkbox"]').each(function(){ $(this).prop('checked', isChecked); }); form.render('checkbox'); }); } }); }); </script> </body> </html> ``` 在上面的代码中,我们首先引入了 layui 的依赖库,然后定义了一个数据数组,用于渲染表格。接着,我们使用 layui.treeGrid.render 方法渲染了一个 treeGrid 表格,并设置了一些必要的参数,例如树节点的标识字段、父节点的标识字段、显示节点名称的字段等等。 在表格渲染完成后,我们通过 jQuery 绑定了全选复选框的点击事件,当点击全选复选框时,会将整个表格的复选框全部选中或取消选中,并使用 layui.form.render 方法重新渲染表格中的复选框。 注意,在上述代码中,我们使用了 jQuery 的 each 方法遍历了所有的复选框,并使用 prop 方法设置了它们的选中状态。如果你使用的是其他的 JavaScript 库或框架,可能需要使用不同的方法来获取和设置复选框的状态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值