Vue3 - Element Plus 树形表格组件 el-table 一键全部展开折叠功能,支持动态数据及懒加载点击父级才去请求的场景,Tree树状表格每行带有children的表格全部收起和折叠!

前言

网上的方案都太坑全是问题,本文提供优质解决方案。

在 vue3 + element-plus 项目开发中,详细实现 el-table 树形表格全部展开、全部折叠功能,表格存在 children 多级子集的情况下,点击按钮将表格一键收起与一键折叠效果,采用智能切换方式 “当前是折叠状态就展开,如果是展开状态就折叠收起”,支持表格 children 数据懒加载情况(需要点击调用接口获取数据),提供详细示例源码。

支持动态懒加载树形表格数据(例如只有点击父级的时候才请求子级),任何复杂表格均可。


如下图所示,可智能切换或拆分按钮单独操作,解决方案强大可靠。

提供详细示例代码,保证100%完成功能。

在这里插入图片描述

示例代码

具体实现代码如下,请直接复制运行测试即可。

### Element Plus表格实现 为了创建一个多表格,在Element Plus中可以利用`el-table`组件及其内置支持树形数据展示功能。通过设置`tree-props`属性,指定用于表示子关系的数据字段名称以及配置其他选项,能够轻松构建具有层次结构的数据列表。 对于解决提到的第一列不对齐问题,可以通过自定义样式调整`.el-table__row`下的单元格内边距来修正显示效果[^1]: ```css /* 使用深层作用选择器穿透样式 */ .el-table /deep/ .el-table__row:not([class*=&#39;el-table__row--level-&#39;]) { td:first-child { padding-left: 24px; } } ``` 下面是一个简单的多表格实例代码片段,展示了如何加载并渲染带有子项目的JSON格式化数据源到页面上: #### HTML模板部分 ```html <template> <div id="app"> <!-- 定义table标签 --> <el-table :data="tableData" style="width: 100%" row-key="id" :default-expand-all="true" border default-expanded-keys="[1]" :tree-props="{children: &#39;children&#39;, hasChildren: &#39;hasChildren&#39;}"> <!-- 表头定义 --> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> ``` #### JavaScript逻辑处理 ```javascript <script setup lang="ts"> import { ref } from "vue"; // 初始化表格数据 const tableData = ref([ { id: 1, date: &#39;2016-05-02&#39;, name: &#39;王小虎&#39;, address: &#39;上海市普陀区金沙江路 1518 弄&#39;, children: [ { id: 3, date: &#39;2016-05-04&#39;, name: &#39;王小虎的儿子&#39;, address: &#39;上海市普陀区金沙江路 1517 弄&#39; }, // 更多子节点... ] }, // 其他顶层条目... ]); </script> ``` 此示例中的关键在于正确设置了`row-key`参数指向唯一标识符,并且指定了`tree-props.children`作为存储子元素数组的名字。这使得框架知道哪些记录应该被视作节点而展开成多个层
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端开发大师鸭

请作者喝杯咖啡 :)

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

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

打赏作者

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

抵扣说明:

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

余额充值