一键展开或折叠树形表格

news/2024/9/24 12:14:48/

一键展开或折叠树形表格

问题场景

现有一个树形表格,需要在表头配置一个折叠展开按钮,点击可以将所有的行折叠或者展开。

目前我们用的element UI的属性表格每次点击只能展开或折叠当前行,当数据量多或者表格层级比较多的情况下,我们就需要引入一键展开或者折叠所有行的这么一个功能。

效果如下

先来看效果

一键展开树形表格

具体实现

使用el-tabledefault-expand-all属性设置默认折叠所有行

通过expand-row-keys属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。

<el-table:data="tableData"style="width: 100%; margin-bottom: 20px":default-expand-all="isExpandAll":expand-row-keys="expandRowKeys"row-key="id"border
>
</el-table

用一个Boolean类型的字段isExpandAll来控制是否展开所有行。用expandRowKeys数组来存放展开行的 keys 数组。

const data = reactive({isExpand: false,expandRowKeys: []
})

在表格中单列一列(最左列),通过自定义表头的方式,显示展开折叠图表。为展开/折叠图表绑定点击事件。

<el-table-column align="left" width="55"><template #header><el-icon @click="expandTable" class="hover-blue" :size="20" style="top: 5px; left: -5px"><el-image v-show="isExpandAll" style="width: 20px":src="require('@/assets/img/expand-bottom.png')"/><el-image v-show="!isExpandAll" :src="require('@/assets/img/expand-right.png')"/></el-icon></template>
</el-table-column>

expandTable方法,展开全部的话,遍历当前表格的所有行,将row.id添加到expandRowKeys中,如果树型表格的深度较深,可以采用递归的方法去遍历表格,添加row.idexpandRowKeys数组里。

const expandTable = () => {data.isExpandAll = !data.isExpandAll// 展开所有行if (data.isExpandAll) {data.expandRowKeys = []data.tableData.forEach((row) => {if (row.hasOwnProperty("children") || row.children.length > 0) {data.expandRowKeys.push(row.id)row.children.forEach((row2) => {if (row2.hasOwnProperty("children") || row2.children.length > 0) {data.expandRowKeys.push(row2.id)}})}})} else {//  折叠所有行data.expandRowKeys = []}
}

tableData数据:

tableData: [
{id: 1,date: '2016-05-02',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 11,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 12,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 121,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 122,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},]},],
},
{id: 2,date: '2016-05-04',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 21,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 22,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 221,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 222,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},]},],
},
{id: 3,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 31,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 32,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 321,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 322,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},]},],
},
{id: 4,date: '2016-05-03',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 31,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 32,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',children: [{id: 321,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},{id: 322,date: '2016-05-01',name: 'wangxiaohu',address: 'No. 189, Grove St, Los Angeles',},]},]
}
],

http://www.ppmy.cn/news/1431399.html

相关文章

Linux开机启动流程

Linux开机启动流程详细步骤如下图&#xff1a; 其中&#xff1a; POST:Power On Self Test --加电自检 BIOS: Basic Input Output System --基础输入输出系统 MBR: Master Boot Record --主引导记录 GRUB: GRand Uni…

五、【易 AI】鼠标事件与目标焦点

所谓辉煌的人生,不过是欲望的囚徒。 ——叔本华 注:自本节开始,所有的示例都以 OpenGLWidget 实现, 一、鼠标事件 重写鼠标事件, #ifndef MYOPENGL_H #define MYOPENGL_H#include <QOpenGLWidget> #include <QTimer> #include <QMouseEvent>class My…

熊猫电竞赏金赛系统源码 APP+H5双端源码附搭建教程下载

熊猫电竞赏金系统简介 熊猫电竞赏金电竞系统 赏金赛源码&#xff0c;用户通过平台打比赛&#xff0c;赢了获得奖金奖励&#xff0c; 金币赛、赏金赛、vip赛等种赛事 可开王者荣耀、和平精英比赛 支持1v1、单排、双排组、战队排等多种比赛模式 支持QQ区、微信区 游戏玩的好…

Mysql 在Windows Server系统下修改数据文件存储路径遇到的坑

因项目需要搭建一个Mysql数据库&#xff0c;为了方便日常运维操作开始选择了Windows Server 2012R2(已有的虚拟机)&#xff0c;考滤到要300G空间&#xff0c;原来的盘空间不够了,就是给虚拟机加了磁盘&#xff0c;Mysql 8.0.26社区版安装路径没得选择&#xff0c;默认就装在C&a…

抖音ip切片带货靠谱吗?抖音切片带货怎么拿授权?切片视频带货详细教程来了,单条视频收益500~800

今天分享一个真正做到让关注我们的粉丝朋友&#xff0c;学到、学懂、能落地&#xff0c;每一次项目分享都秉承高收益、低风险&#xff0c;可行性&#xff0c;有结果的原则&#xff0c;新手朋友可以直接按照我们分享的流程快速上手操作项目&#xff0c;项目老鸟们能够掌握更多信…

『大模型笔记』视觉语言模型解释

视觉语言模型解释 文章目录 一. 视觉语言模型解析1.什么是视觉语言模型?2. 开源视觉语言模型概览3. 如何找到合适的视觉语言模型MMMUMMBench4. 技术细节5.使用变压器 (transformers) 运用视觉语言模型6. 使用 TRL 微调视觉语言模型二. 参考文章一. 视觉语言模型解析 视觉语言…

css 设置div阴影样式

文章目录 问题描述解决方案代码示例设置阴影样式 问题描述 大家好&#xff01;我是夏小花&#xff0c;今天是2024年4月23日|农历三月十五&#xff0c;今天这篇文章主要以div或者是view添加阴影样式为主题 &#xff0c;详细代码如下 解决方案 这段是vue页面中的 代码&#xff0…

ScanNet 数据集常见文件的作用极其读取方式

ScanNet 数据集是一个大规模的 RGB-D 视频数据集&#xff0c;它包含了丰富的三维场景理解任务所需的数据&#xff0c;如三维物体分类、语义体素标签和 CAD 模型检索等。数据集中的每个文件都有特定的作用&#xff0c;以下是一些常见文件及其作用的解释&#xff1a; _vh_clean.p…