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

vue3 el-table 行筛选 设置为单选

在 Vue 3 中,使用 Element Plus 的 <el-table> 组件时,如果你想实现行筛选功能,并且要求这种筛选为单选(即每次只能选择一行),你可以通过结合使用 selection 模式和一些额外的逻辑来实现。

1. 设置表格为单选模式

首先,确保你的 <el-table> 组件设置了 @selection-change 事件监听器,并开启了行选择(selection)模式。

<template><el-table:data="tableData"@selection-change="handleSelectionChange"ref="multipleTableRef"@row-click="handleRowClick"style="width: 100%"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnlabel="日期"width="120"><template #default="scope">{{ scope.row.date }}</template></el-table-column><el-table-columnlabel="姓名"width="120"><template #default="scope">{{ scope.row.name }}</template></el-table-column><!-- 其他列 --></el-table>
</template>

2. 实现单选逻辑

在 <el-table> 的 @selection-change 事件中,你可以控制最多只能选择一个选项。同时,你也可以通过 @row-click 事件直接设置单选效果。

<script setup>
import { ref } from 'vue';
import { ElTable } from 'element-plus';const tableData = ref([/* 数据列表 */]);
const selectedRow = ref(null); // 用于存储当前选中的行数据
const multipleTableRef = ref(null); // 引用表格,用于调用 clearSelection 方法// 处理行选择变化
const handleSelectionChange = (selection) => {if (selection.length > 1) {// 如果尝试选择多行,则取消之前的所有选择,只保留当前选中的行multipleTableRef.value.clearSelection(); // 清除所有选择if (selection[0]) { // 只保留第一项的选择状态,实现单选效果multipleTableRef.value.toggleRowSelection(selection[0], true); // 重新选择第一项selectedRow.value = selection[0]; // 更新选中行数据} else {selectedRow.value = null; // 如果没有选中任何行,则清空选中行数据}} else {selectedRow.value = selection[0]; // 更新选中行数据}
};// 处理行点击事件,实现单选效果(可选)
const handleRowClick = (row, column, event) => {if (selectedRow.value !== row) { // 如果点击的行不是当前选中的行,则更新选中行数据和选择状态multipleTableRef.value.clearSelection(); // 清除所有选择multipleTableRef.value.toggleRowSelection(row, true); // 选择当前行selectedRow.value = row; // 更新选中行数据} else { // 如果点击的行就是当前选中的行,则不作处理(保持选中状态)或者可以选择取消选中(根据需求)multipleTableRef.value.clearSelection(); // 可选:取消选中状态,实现点击已选行不取消选择的效果(注释此行以保持点击已选行不取消选择)}
};
</script>

3. 使用 selectedRow 控制显示或逻辑处理

你可以根据 selectedRow 的值来控制某些逻辑或显示特定的UI元素。例如,你可以在表格下方显示当前选中行的详细信息:

<template><div v-if="selectedRow">选中行的详细信息:{{ selectedRow }}</div>
</template>

通过这种方式,你可以实现在 Vue 3 和 Element Plus 中使用 <el-table> 的单选行筛选功能。

http://www.lryc.cn/news/579957.html

相关文章:

  • 电商分拣的“效率密码”:艾立泰轻量化托盘引领自动化流水线革新
  • vue3 获取选中的el-table行数据
  • 【WRFDA第三期】OBSPROC namelist 变量总结
  • Ubuntu 22.04 + MySQL 8 无密码登录问题与 root 密码重置指南
  • OpenCV中DPM(Deformable Part Model)目标检测类cv::dpm::DPMDetector
  • 前端基础知识Webpack系列 - 03(webpack中常见的Loader?解决了什么问题?)
  • STM32CubeMX教程1 实现点灯点灯
  • 量化开发(系列第3篇): C++在高性能量化交易中的核心应用与技术栈深度解析
  • 三态逻辑详解:单片机GPIO、计算机总线系统举例
  • 【python实用小脚本-128】基于 Python 的 Hacker News 爬虫工具:自动化抓取新闻数据
  • RK-Android11-性能优化-限制App内存上限默认512m
  • 基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
  • 如何调节笔记本电脑亮度?其实有很多种方式可以调整亮度
  • Mysql+neo4j创建节点和关系
  • [环境安装] 图数据库Neo4j 2025.05 安装(apple M芯片)
  • XILINX Kintex 7系列FPGA的全局时钟缓冲器(BUFG)和区域时钟缓冲器(BUFR/BUFH)的区别
  • EPLAN 电气制图:建立自己的部件库,添加部件-加SQL Server安装教程(三)上
  • HarmonyOS学习记录3
  • 2025微信小程序wxapkg解包全攻略
  • 怎么下载Eclipse CDT历史版本
  • 深度剖析:如何解决Node.js中mysqld_stmt_execute参数错误
  • 【Maven】Maven命令大全手册:28个核心指令使用场景
  • 教资报名手机裁剪照片工具推荐 | 教师资格证照片在线生成器
  • 技术与情感交织的一生 (九)
  • 微信小程序51~60
  • BTC.D三阶段发展解析:从铭文生态到超级比特币公链
  • [Linux]内核如何对信号进行捕捉
  • 生成式AI版权迷局中的技术破茧之路
  • 7月4日星期五今日早报简报微语报早读
  • 面试150 赎金信