layui 树形表格 treeTable使用详细指南,不能折叠解决办法

最近在写一个商品分类管理的功能,本来想用layui的树形组件来写,但发现layui原生的tree只能展示title,而分类的其他字段无法展示,这就有点不适用了,无意中看到一位大神自定义写的一个树形表格组件,正好满足我的要求,特此将使用方法以及其中遇到的一些坑记录下来。。。

首先看下treeTable的

演示地址

项目地址

好了,如果看完演示到这里你觉得正好符合你的功能要求,就可以继续往下看了,

虽然项目地址中已经把使用介绍的很详细了,但是我在这里要补充一下我遇到的坑:

使用方法


1,引入模块

打开项目地址,将整个项目下载下来,项目中其他文件可以参考,我们主要用的就是treetable-lay这个文件夹的内容。

在这里插入图片描述

下载好项目后把treetable-lay放在我们自己项目的任意位置,但是尽量和layui文件夹放一块,好找!

下面是我放的位置,如图所示:

在这里插入图片描述

2,初始化模块配置

要扩展layui的模块使用我们引入的js模块,注意base路径是treetable-lay文件夹所在的父路径,这里出错会报404,extend内容最好不要改。

下面我先每个重点注意事项单独列出来,最后放完整代码。

layui.config({

base: ‘${pageContext.request.contextPath}/layuiadmin/modules/’ // 资源所在路径

}).extend({

treetable: ‘treetable-lay/treetable’

}).use([‘treetable’, ‘table’, ‘layer’], function () {

var treetable = layui.treetable;

var layer = layui.layer;

var table = layui.table;

var $ = layui.jquery;

});

如下图所示:

在这里插入图片描述

3,动态渲染表格

数据是从后台查询出来,数据格式不需要做处理,只需要查询所有就行了,官方文档给了json格式,我自己也做了一个简单的封装,一会儿再说json格式。

这里要注意的是treeIdName和treePidName这两个属性,要对应自己查询出来的id和pid。支持自定义这点非常好

<%–树形表格–%>

//js如下:

layui.use([‘treetable’, ‘table’, ‘layer’], function () {

var treetable = layui.treetable;

var layer = layui.layer;

var table = layui.table;

var $ = layui.jquery;

var re;

// 渲染表格

var renderTable = function () {

layer.load(3); //这里好像是要加载几层 ,我的是3层,就写了个3,

re = treetable.render({

elem: ‘#Lay_category_treeTable’,

url: ‘${basepath}/goodscategory/selectTreeTable’,

treeColIndex: 1, // 树形图标显示在第几列

treeSpid: 0, // 最上级的父级id

treeIdName: ‘classId’, // id字段的名称

treePidName: ‘parentId’, // pid字段的名称

treeDefaultClose: true, //是否默认折叠

page: false,

//treeLinkage: true, //父级展开时是否自动展开所有子级

cols: [[

{type: ‘numbers’},

{title: “分类名称”, field: “className”,align:“left”},

{title: “分类编码”, field: “classCode”},

// {title: “分类层级”, field: “classIdLevel”},

{title: “分类状态”, field: “classIdStatus”,templet: ‘#classIdStatusTpl’},

{title: “创建人”, field: “createUser”},

{

title: “创建时间”,

field: “createTime”,

templet: ‘

{{# if(d.createTime!=null){ }} {{ layui.util.toDateString(d.createTime,‘yyyy-MM-dd HH:mm:ss’) }} {{# } }}

},

{title: “更新人员”, field: “updateUser”},

{

title: “更新时间”,

field: “updateTime”,

templet: ‘

{{# if(d.updateTime!=null){ }} {{ layui.util.toDateString(d.updateTime,‘yyyy-MM-dd HH:mm:ss’) }} {{# } }}

},

{title: “操作”, templet: “#updateAndDelete”}

]],

done: function () {

layer.closeAll(‘loading’);

}

})

};

可以使用url传递数据,也可以使用data传递数据,如果使用url传递数据,参数是where字段,

跟layui数据表格的使用方式一致。

4,参数说明,(这里直接复制官方的)

layui数据表格的所有参数都可以用,除此之外treetable新增的参数有:

| 参数 | 类型 | 是否必填 | 描述 | |

| — | — | — | — | — |

| treeColIndex | int | 是 | 树形图标显示在第几列 | |

| treeSpid | object | 是 | 最上级的父级id | |

| treeIdName | string | 否 | id字段的名称 | |

| treePidName | string | 否 | pid字段的名称 | |

| treeDefaultClose | boolean | 否 | 是否默认折叠 | |

| treeLinkage | boolean | 否 | 父级展开时是否自动展开所有子级 | |

treeColIndex

树形图标(箭头和文件夹、文件的图标)显示在第几列, 索引值是cols数组的下标。

treeSpid

最上级的父级id,比如你可以规定pid为0或-1的是最顶级的目录。

treeIdName

treetable是以id和pid字段来渲染树形结构的,如果你的数据没有id和pid字段,你可以指定id和pid字段的名称。

treePidName

pid在你的数据字段中的名称。

treeDefaultClose

默认是全部展开的,如果需要默认全部关闭,加上treeDefaultClose:true即可。

treeLinkage

父级展开时是否自动展开所有子级

注意事项
  • 不能使用分页功能,即使写了page:true,也会忽略该参数。

  • 不能使用排序功能,不要开启排序功能。

  • table.reload()不能实现刷新,请参考demo的刷新。

  • 除了文档上写的treetable.xxx的方法之外,其他数据表格的方法都使用table.xxx。

  • 建议删除和修改请求完后台之后请刷新(重新渲染)表格,最好不要使用obj.delete方式删除。

5,其他方法

这里除了layui的方法新增的方法有展开所有,折叠所有,刷新表格 ,三种方法,使用方法如下:

全部展开

全部折叠

刷新表格

renderTable(); //这个就是上面的渲染表格 var renderTable = function () {…}

//展开所有

$(‘#btn-expand’).click(function () {

//alert(0)

treetable.expandAll(‘#Lay_category_treeTable’);

});

//折叠所有

$(‘#btn-fold’).click(function () {

// alert(1)

treetable.foldAll(‘#Lay_category_treeTable’);

});

//刷新表格

$(‘#btn-refresh’).click(function () {

renderTable();

});

6,content图标。

图标这个从gitee码云的源码上看吧,不再详细说,也没啥可说的。

7,我遇到的坑


我照着他给的教程一步步弄下来页面也显示出来了,但就是不能折叠,不管是我用折叠方法还是点那个三角图片还是设置为默认折叠,就是不管用,

不能折叠,可把我给气坏了。

苦思冥想找不到问题,最后我去研究treetable.js这个文件

发现其中有一段代码他给注释掉了,如下图所示:

在这里插入图片描述

然后我把注释的这一段代码打开,哎,好了,展开折叠正常了,不知道什么原因,不知道有没有其他人遇到过。。。

最后,分享一下我写的不成熟的这个页面的功能汇总,做个记录:

主要功能有,树形表格展示,添加,修改,删除,批量删除,搜索,layui时间日期自定义格式列,表格全部展开、折叠、刷新表格等功能,有兴趣的看下吧~~

效果图如下所示:

在这里插入图片描述

全部代码在这~:

<%–

Created by IntelliJ IDEA.

User: Administrator

Date: 2019/9/23

Time: 13:25

To change this template use File | Settings | File Templates.

–%>

<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<%@ include file=“…/meta.jsp” %>

商品分类管理

批量删除

添加

 

<input type=“text” name=“search” id=“Lay_toSearch_input” placeholder=“请输入分类名称” autocomplete=“off”

class=“layui-input”>

<button type=“button” class=“layui-btn layui-btn-normal” id=“btn-search”<%-- οnclick=“doSearch()”–%>>

搜索

 

全部展开

全部折叠

刷新表格

<%–

随机更换小图标

–%>

<%–树形表格–%>

<%–树形菜单–%>

<%–Table表格–%>

<%--

–%>

<%–弹出层–%>

style=“padding: 20px 30px 0 0;display: none”>

<input type=“checkbox” lay-skin=“switch” lay-text=“启用|禁用” value=“1” checked name=“classIdStatus”

id=“classIdStatus” class=“layui-input”>

一级分类 二级分类 三级分类

确认添加

确认修改

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取

});

}

function doMultiDelete() {

//获取到选中的内容的id===》table模块中找方法

layui.use([‘layer’, ‘table’], function () {

var table = layui.table;

var layer = layui.layer;

//获取到选中的数据

var checkStatus = table.checkStatus(‘Lay_back_table’); //idTest 即为基础参数 id 对应的值

// console.log(checkStatus.data);//获取选中行的数据

var data = checkStatus.data;

if (data.length == 0) {

layer.alert(“请选中要删除的数据”);

} else {

layer.confirm(“确定要删除选中的所有数据”, function (index) {

//把所有选中的数据的id封装到一个数组中

var ids = new Array(data.length);

for (var i = 0; i < ids.length; i++) {

ids[i] = data[i].id;

}

console.log(“ids===” + ids);

//执行删除操作

$.ajax({

url: “${pageContext.request.contextPath}/prefixThird/deleteMany”,

data: “ids=” + ids,

success: function (data) {

//删除确认框关闭掉

layer.close(index);

//删除提示

layer.alert(“删除” + data.msg+“,请点击右上角刷新表格后生效!”, {time: 2000});

//刷新table

// table.reload(“Lay_back_table”);

// renderTable();

}

})

});

}

});

}

最后

小编这些年深知大多数初中级工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此我收集整理了一份《2024年Java全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-rkmffcTO-1719517510592)]

[外链图片转存中…(img-QyV2w7ur-1719517510593)]

[外链图片转存中…(img-H7zdUA2y-1719517510594)]

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你需要这些资料,⬅专栏获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值