当前位置: 首页 > news >正文

【UI】element ui table(表格)expand实现点击一行展开功能

文章目录

  • 前言
  • 涉及知识点:
  • 代码部分
  • 隐藏小箭头
  • 总结

前言

element ui是一个非常不错的vue的UI框架,element对table进行了封装,简化了vue对表格的渲染。
element ui表格中有一个功能是展开行,在2.0版本官网例子中,只可以点击右箭头可以展开,我们的很多需求是点击某一行展开,那是不是无法实现呢?其实,借助element ui的一些属性,轻松实现点击某行展开,我们还是用2.0.9版本官网的例子

可以看到官方代码中在这边没有让这个可展开table自动折叠的功能,我点击了别的标签页后上次点击的行仍旧处在一个展开的状态,而且操控的方式也只能点击到左上角的小箭头才可以控制行的展开状态,体验不是特别好,可以说有点糟糕了,但是我后来在后面的文档中发现The methods 里面有写到一个方法叫toggleRowExpansion,这个方法应该是官方本意上想让我们来自由控制展开状态的,从传递的两个参数来看,一个是row(当前点击的行id),另一个是expended(行展开状态,boolean值),看上去有理有据,但是就是不知道怎么用,因为我始终无法获取到expended这个参数的值,有点气,所以这次我们用另一种方式来实现这个功能。

参考文章:
element ui table(表格)实现点击一行展开功能
使用element-ui中table expand展开行控制显示隐藏,隐藏小箭头列的方法,之展开一行内容
使用element-ui中table expand展开行控制显示隐藏(手风琴效果)

在这里插入图片描述

涉及知识点:

1、不点击小箭头,点击其他列中的某个按钮展开行内容。

2、隐藏小箭头列(既然我们点击表格其他单元格展开行内容了,一般就不需要小箭头列了)

3、只展开一行内容

代码部分

对齐改造,使之可以做到这点

<template><el-table:data="tableData5"style="width: 100%"@row-click="handleRowClick"ref="expandableTable"><el-table-column type="expand"><template slot-scope="props"><el-form label-position="left" inline class="demo-table-expand"><el-form-item label="商品名称"><span>{{ props.row.name }}</span></el-form-item><el-form-item label="所属店铺"><span>{{ props.row.shop }}</span></el-form-item><el-form-item label="商品 ID"><span>{{ props.row.id }}</span></el-form-item><el-form-item label="店铺 ID"><span>{{ props.row.shopId }}</span></el-form-item><el-form-item label="商品分类"><span>{{ props.row.category }}</span></el-form-item><el-form-item label="店铺地址"><span>{{ props.row.address }}</span></el-form-item><el-form-item label="商品描述"><span>{{ props.row.desc }}</span></el-form-item></el-form></template></el-table-column><el-table-columnlabel="商品 ID"prop="id"></el-table-column><el-table-columnlabel="商品名称"prop="name"></el-table-column><el-table-columnlabel="描述"prop="desc"></el-table-column></el-table>
</template><style>.demo-table-expand {font-size: 0;}.demo-table-expand label {width: 90px;color: #99a9bf;}.demo-table-expand .el-form-item {margin-right: 0;margin-bottom: 0;width: 50%;}
</style><script>export default {data() {return {tableData5: [{id: '12987122',name: '好滋好味鸡蛋仔',category: '江浙小吃、小吃零食',desc: '荷兰优质淡奶,奶香浓而不腻',address: '上海市普陀区真北路',shop: '王小虎夫妻店',shopId: '10333'}, {id: '12987123',name: '好滋好味鸡蛋仔',category: '江浙小吃、小吃零食',desc: '荷兰优质淡奶,奶香浓而不腻',address: '上海市普陀区真北路',shop: '王小虎夫妻店',shopId: '10333'}, {id: '12987125',name: '好滋好味鸡蛋仔',category: '江浙小吃、小吃零食',desc: '荷兰优质淡奶,奶香浓而不腻',address: '上海市普陀区真北路',shop: '王小虎夫妻店',shopId: '10333'}, {id: '12987126',name: '好滋好味鸡蛋仔',category: '江浙小吃、小吃零食',desc: '荷兰优质淡奶,奶香浓而不腻',address: '上海市普陀区真北路',shop: '王小虎夫妻店',shopId: '10333'}],}},methods:{handleRowClick(row, event, column) {this.$refs.expandableTable.toggleRowExpansion(row);},}}
</script>

这个例子可以直接复制运行起来,一点问题都没有,上面的代码可以实现点击某行展开,对比官网的例子,我们在table添加了

@row-click="handleRowClick"
ref="expandableTable"

隐藏小箭头

自己项目中遇到的问题是想要隐藏小箭头列,无意间发现这篇文章,原来只需要设置 width="1" 就行了。

因为我设置了<el-table-column type="expand" width="1"></el-table-column> 会多出1px的边距,所以我们可以再在最外层放一个空的div,设置样式overflow:hidden;
再设置此table的样式margin-left:1px;好了,完美实现。(自己的项目中没有遇到1px影响效果的情况,可以直接设置宽度为1px即可)

放上项目最终的效果图,无多出的1px边框。

在这里插入图片描述

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Moveit2官方教程】使用 MoveIt Task Constructor (MTC) 框架来定义和执行一个机器人任务
  • Windows下SDL2创建最简单的一个窗口
  • laravel 11 区分多模块的token
  • Debian项目实战——环境搭建篇
  • 如何查看macos是x86还是arm
  • Android perfetto 简介
  • 容联云容犀Copilot&Agent入选《中国 AI Agent 产品罗盘》
  • 【鸿蒙】HarmonyOS NEXT星河入门到实战1-开发环境准备
  • C++中的for-each循环
  • 设计模式】Listener模式和Visitor模式的区别
  • Android 设计模式
  • python画图|3D垂线标记
  • HT5169 内置BOOST升压的11WI2S输入D类音频功放
  • wangeditor——cdn引入的形式创建一个简易版编辑器——js技能提升
  • 从状态管理到性能优化:全面解析 Android Compose
  • $translatePartialLoader加载失败及解决方式
  • docker容器内的网络抓包
  • FineReport中如何实现自动滚屏效果
  • python3 使用 asyncio 代替线程
  • Spring-boot 启动时碰到的错误
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Theano - 导数
  • 工作手记之html2canvas使用概述
  • 基于webpack 的 vue 多页架构
  • 聊聊redis的数据结构的应用
  • 思维导图—你不知道的JavaScript中卷
  • 以太坊客户端Geth命令参数详解
  • 异步
  • 【干货分享】dos命令大全
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • ​flutter 代码混淆
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (0)Nginx 功能特性
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (一)Java算法:二分查找
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)大型网站的系统架构
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net的C#语言取月份数值对应的MonthName值
  • .NET企业级应用架构设计系列之技术选型
  • .NET微信公众号开发-2.0创建自定义菜单
  • .so文件(linux系统)
  • /dev/sda2 is mounted; will not make a filesystem here!
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • @staticmethod和@classmethod的作用与区别
  • [ Socket学习 ] 第一章:网络基础知识
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)