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

Element-plus点击当前行之后获取数据显示跟随行数据

要实现点击当前行后,在当前行的下方显示数据,可以通过以下步骤来实现:

  1. 在表格的行点击事件中获取当前点击行的位置信息。
  2. 根据位置信息动态计算并设置需要显示数据区域的位置。

下面是一个更新后的示例代码,演示如何在 Element-Plus 的表格中实现点击当前行获取数据并在当前行下方显示数据的功能:

<template><div><el-table:data="tableData"@row-click="handleRowClick"ref="table"><el-table-columnprop="name"label="Name"></el-table-column><el-table-columnprop="age"label="Age"></el-table-column></el-table><el-popoverv-if="selectedRow"v-model="popoverVisible"trigger="manual"placement="bottom"width="200"><div><h2>Selected Row Data:</h2><p>Name: {{ selectedRow.name }}</p><p>Age: {{ selectedRow.age }}</p></div></el-popover></div>
</template><script>
export default {data() {return {tableData: [{ name: 'Alice', age: 25 },{ name: 'Bob', age: 30 },{ name: 'Charlie', age: 28 }],selectedRow: null,popoverVisible: false};},methods: {handleRowClick(row) {this.selectedRow = row;this.$nextTick(() => {const tableEl = this.$refs.table.$el;const rowEl = tableEl.querySelector(.el-table__body tr[data-row-key="${row._rowKey}"]);if (rowEl) {const rect = rowEl.getBoundingClientRect();const top = rect.top + rect.height + window.scrollY;this.$refs.popover.$refs.popper.style.top = ${top}px;}this.popoverVisible = true;});}}
};
</script>

在这个更新后的示例中,我们通过使用el-popover组件来在当前行下方显示数据,同时在handleRowClick方法中动态计算并设置el-popover的位置,使其显示在当前点击行的下方。我们使用了$nextTick方法来确保在表格渲染完成后再计算位置信息,以确保能够正确获取行元素的位置。

通过这种方式,当用户点击表格的某一行时,会在当前行的下方显示相应的数据信息,实现了在当前行下方显示数据的效果。

在 Element Plus 的 el-table 中使用 el-table-column 的 type=“expand” 可以实现展开行功能。以下是关于该功能的示例代码和注释:

<!-- 在外层的table中设置关键属性 -->
<el-table :data="tableList"style="width: 100%"@expand-change="expandColumn" :row-key="getRowKeys" :expand-row-keys="expands"
>
</el-table><!-- 在内层设置展开行的书写插槽 -->
<el-table-column type="expand" fixed><template #default><!-- 书写对应内容即可 --></template>
</el-table-column>

在以上示例代码中,您可以看到如何在外层的 el-table 中设置了关键属性,并在内层的 el-table-column 中设置了展开行的插槽。通过这样的设置,您可以实现展开行的功能。接下来是对应的逻辑代码:

let expandColumn = (row, expandedRows) => {// row 被点击当前行的数据// expandedRows 存放页面中被展开行的数据,对应的数组就是 expand-row-keys// 通过 expandedRows 的长度来判断用户是点击展开还是折叠if (expandedRows.length) {// 展开expands.value = [];// 先干掉之前展开的行if (row) {expands.value.push(row.id); // push 新的行 (原理有点类似防抖)}} else {expands.value = []; // 折叠,清空 expand-row-keys 对应的数组}
};let getRowKeys = (row) => {// row 是当前行的数据// 给每行绑定唯一的标识return row.id;
};

以上就是文章全部内容了,如果喜欢这篇文章的话,还希望三连支持一下,感谢!

相关文章:

  • Java将list数组中重复的对象进行去重
  • java反射和注解
  • 基于Spring Boot与Vue的智能房产匹配平台+文档
  • Log4j日志框架讲解(全面,详细)
  • 上帝之眼(BEVSee):多相机间无需标定,将各自目标统一到同一坐标系下(代码开源,提供数据集)
  • C++编程(五)单例模式 友元
  • 如何寻找一个领域的顶级会议,并且判断这个会议的影响力?
  • SpringBoot学习04-[定制SpringMVC]
  • 在Qt中,直接include <moc_xxxxx.cpp> 为什么不会出现符号冲突的错误?
  • UTONMOS:探索未来区块链与元宇宙的游戏奇妙融合
  • linux的常用系统维护命令
  • Linux的一些杂项函数总结
  • rabbitmq消息队列提出的问题(个人想法)
  • 有哪些好的 Stable Diffusion 提示词(Prompt)可以参考?
  • hive零基础入门
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • express + mock 让前后台并行开发
  • IP路由与转发
  • JavaScript的使用你知道几种?(上)
  • Java教程_软件开发基础
  • jQuery(一)
  • Leetcode 27 Remove Element
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • mysql外键的使用
  • React Transition Group -- Transition 组件
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 简单数学运算程序(不定期更新)
  • 如何使用 JavaScript 解析 URL
  • 使用权重正则化较少模型过拟合
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 微信开源mars源码分析1—上层samples分析
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 阿里云ACE认证学习知识点梳理
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ###STL(标准模板库)
  • #Z2294. 打印树的直径
  • %@ page import=%的用法
  • (SpringBoot)第二章:Spring创建和使用
  • (二)WCF的Binding模型
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (黑马C++)L06 重载与继承
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)socket Aio demo
  • (转)winform之ListView
  • ./和../以及/和~之间的区别
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Core 项目指定SDK版本
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net 访问电子邮箱-LumiSoft.Net,好用