Element-ui el-table组件单选/多选/跨页勾选讲解
文章目录
- 一、el-table介绍
- 二、el-table单选
- 三、el-table多选
- 四、el-table跨页勾选
- 五、热门文章
一、el-table介绍
el-table
是 Element UI(一个基于 Vue.js 的高质量 UI 组件库)中的一个组件,用于展示表格数据。通过 el-table
,你可以很方便地创建具有多种功能(如排序、筛选、分页等)的表格。
el-table
使用示例:
<template><el-table:data="tableData"style="width: 100%"><el-table-columnprop="date"label="日期"width="180"></el-table-column><el-table-columnprop="name"label="姓名"width="180"></el-table-column><el-table-columnprop="address"label="地址"></el-table-column></el-table>
</template><script>
export default {data() {return {tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小狮',address: '上海市普陀区金沙江路 1517 弄'}, {// ...其他数据}]}}
}
</script>
在上面的示例中:
el-table
是表格的根组件,通过:data
属性绑定要展示的数据(这里是一个数组)。el-table-column
是表格列的组件,用于定义表格的每一列。prop
属性指定了每一列对应的数据字段。label
属性指定了列的标题。width
属性(可选)用于指定列的宽度。
Element UI 的 el-table
组件提供了许多其他的功能和配置选项,如分页、排序、筛选、行展开、自定义模板等,你可以根据需要进一步了解和使用它们。
二、el-table单选
Table 组件提供了单选的支持,只需要配置highlight-current-row属性即可实现单选。之后由current-change事件来管理选中时触发的事件,它会传入currentRow,oldCurrentRow。如果需要显示索引,可以增加一列el-table-column,设置type属性为index即可显示从 1 开始的索引号。
<template><el-tableref="singleTable":data="tableData"highlight-current-row@current-change="handleCurrentChange"style="width: 100%"><el-table-columntype="index"width="50"></el-table-column><el-table-columnproperty="date"label="日期"width="120"></el-table-column><el-table-columnproperty="name"label="姓名"width="120"></el-table-column><el-table-columnproperty="address"label="地址"></el-table-column></el-table><div style="margin-top: 20px"><el-button @click="setCurrent(tableData[1])">选中第二行</el-button><el-button @click="setCurrent()">取消选择</el-button></div>
</template><script>export default {data() {return {tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'}, {date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄'}, {date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄'}, {date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄'}],currentRow: null}},methods: {setCurrent(row) {this.$refs.singleTable.setCurrentRow(row);},handleCurrentChange(val) {this.currentRow = val;}}}
</script>
三、el-table多选
在 Element UI 的 el-table
组件中实现列表勾选选择(即多选功能),你需要使用 type="selection"
的 el-table-column
,并且监听 selection-change
事件。但如果你希望用户能够明确地选择多行(而不是单选),你通常不需要做任何特殊设置,因为 type="selection"
默认就是用于多选的。
el-table
列表勾选选择的示例:
<template><el-table:data="tableData"style="width: 100%"@selection-change="handleSelectionChange"><el-table-columntype="selection"width="55"></el-table-column><el-table-columnprop="date"label="日期"width="180"></el-table-column><el-table-columnprop="name"label="姓名"width="180"></el-table-column><el-table-columnprop="address"label="地址"></el-table-column></el-table>
</template><script>
export default {data() {return {tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'},{date: '2016-05-04',name: '王小狮',address: '上海市普陀区金沙江路 1517 弄'},// ...其他数据],multipleSelection: [] // 用于存储选中行的数组};},methods: {handleSelectionChange(val) {// val 是一个包含选中行数据的数组this.multipleSelection = val;console.log('当前选中项', val);}}
};
</script>
在这个示例中:
el-table-column
的type
属性设置为"selection"
来启用勾选选择。@selection-change="handleSelectionChange"
监听选择变化事件,并将选中的行数据数组作为参数传递给handleSelectionChange
方法。handleSelectionChange
方法接收一个数组val
,它包含了所有当前被勾选(选中)的行数据。multipleSelection
数据属性用于在组件内部存储当前选中的行数据,但这并不是必须的,你可以根据需要在handleSelectionChange
方法中直接处理这些数据。
四、el-table跨页勾选
在 Element UI 的 el-table
组件中实现跨页勾选功能,需要确保在分页时能够保留之前页面的选择状态。这通常涉及到在表格组件上设置一些特定的属性和监听事件,并结合后端分页接口的数据处理。
以下是实现 el-table
跨页勾选功能的基本步骤:
- 添加
row-key
属性:在el-table
上设置row-key
属性,该属性用于指定表格中每一行的唯一标识符,通常可以是行数据的某个唯一字段(如 ID)。
<el-table :row-key="getRowKey" ...>...
</el-table>
在 Vue 实例的 methods 中定义 getRowKey
方法:
methods: {getRowKey(row) {return row.id; // 假设每行数据都有一个唯一的 id 字段}
}
- 设置
reserve-selection
属性:在el-table-column
的type="selection"
上设置reserve-selection
属性为true
,这将使得在分页时能够保留之前的选择状态。
<el-table-column type="selection" reserve-selection ...>
</el-table-column>
- 处理分页数据:确保后端分页接口返回的数据包含之前页面选中行的状态信息。这通常需要在后端进行实现,使得在每次请求新的分页数据时,后端能够知道哪些行是之前被选中的。
- 监听
selection-change
事件:在el-table
上监听selection-change
事件,并在事件处理函数中更新当前选中的行数据。这通常用于在前端维护一个表示当前选中行数据的数组。
<el-table ... @selection-change="handleSelectionChange">...
</el-table>
在 Vue 实例的 methods 中定义 handleSelectionChange
方法:
methods: {handleSelectionChange(val) {this.multipleSelection = val; // 更新当前选中的行数据数组// 可以在这里进行其他操作,如向后端发送更新选中状态的请求等}
}
- 注意事项:
- 如果后端分页接口不支持跨页勾选功能,你可能需要在前端自行实现一种机制来跟踪和保存选中状态。例如,可以使用浏览器的 localStorage 或 Vuex 等状态管理库来保存选中状态。
- 当用户切换页面或进行其他可能改变表格数据的行为时,需要确保之前的选择状态被正确地保留和恢复。这可能需要你在 Vue 组件的生命周期钩子(如
created
、mounted
、updated
等)中进行一些额外的处理。
完整代码
<template> <div> <el-pagination @current-change="handlePageChange" :current-page="currentPage" :page-size="pageSize" layout="prev, pager, next" :total="totalItems" ></el-pagination> <el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" row-key="id" > <el-table-column type="selection" reserve-selection ></el-table-column> <el-table-column prop="date" label="日期" width="180" ></el-table-column> <el-table-column prop="name" label="姓名" width="180" ></el-table-column> <!-- 其他列 --> </el-table> </div>
</template> <script>
export default { data() { return { currentPage: 1, // 当前页码 pageSize: 10, // 每页显示数量 totalItems: 0, // 总数据条数,从后端接口获取 tableData: [], // 当前页数据 selectedRows: [], // 所有选中的行数据,用于跨页保存状态 }; }, created() { this.fetchData(); // 初始化时加载第一页数据 }, methods: { // 加载数据的函数(需要调用后端接口) fetchData() { // 假设你有一个 fetchTableData 函数,用于从后端获取分页数据 // 这里需要传入当前页码和每页显示数量,并返回数据 // 同时,这个函数还需要处理后端返回的总数据条数 totalItems this.fetchTableData(this.currentPage, this.pageSize) .then(response => { this.totalItems = response.total; // 更新总数据条数 this.tableData = response.data; // 更新当前页数据 // 如果后端支持跨页勾选,还需要处理 selectedRows // 例如,从 response 中获取之前选中的行 ID,然后筛选出对应的行数据放入 selectedRows }) .catch(error => { // 处理错误 }); }, handlePageChange(val) { this.currentPage = val; this.fetchData(); // 切换页码时重新加载数据 }, handleSelectionChange(val) { // val 是当前页选中的行数据数组 // 这里需要处理跨页选中的逻辑 // 你可以将 val 与 selectedRows 进行合并、去重等操作 // 并将最终的结果赋值给 selectedRows this.selectedRows = val; // 简化的示例,实际中可能需要更复杂的逻辑 // 你还可以选择将 selectedRows 发送到后端进行保存(如果需要的话) }, // 假设的 fetchTableData 函数(你需要根据后端接口来实现) fetchTableData(page, size) { // 发送请求到后端获取数据,并返回 Promise }, },
};
</script>
五、热门文章
- 【温故而知新】vue运用之探讨下单页面应用(SPA)与多页面应用(MPA)
- 【温故而知新】探讨下对vue的mixin的理解
- 【温故而知新】vue修饰符有哪些
- 【温故而知新】vue组件间通信的实现方式
- draggable实现拖拽、禁止拖拽、拖拽后元素重新排序到指定位置
- router路由按需加载
- vue页面导出Word文档(含图片)
- Vue拖拽组件awe-dnd
- el-tabs事件绑定(Element UI)
相关文章:
Element-ui el-table组件单选/多选/跨页勾选讲解
文章目录 一、el-table介绍二、el-table单选三、el-table多选四、el-table跨页勾选五、热门文章 一、el-table介绍 el-table 是 Element UI(一个基于 Vue.js 的高质量 UI 组件库)中的一个组件,用于展示表格数据。通过 el-table,你…...

CentOS 安装 SeaweedFS
1. SeaweedFS 介绍 SeaweedFS 是一个简单且高度可扩展的分布式文件系统。有两个目标: to store billions of files! (存储数十亿个文件!)to serve the files fast! (快速提供文件!) Seaweedfs的中心节点(center master)…...

Redis如何避免数据丢失?——AOF
目录 AOF日志 1. 持久化——命令写入到AOF文件 写到用户缓冲区 AOF的触发入口函数——propagate 具体的实现逻辑——feedAppendOnlyFile 从用户缓冲区写入到AOF文件(磁盘) 函数write、fsync、fdatasync Redis的线程池 AOF文件的同步策略 触发的入口函数——…...

xFormers
文章目录 一、关于 xFormers二、安装 xFormers三、基准测试(可选)测试安装 四、使用 xFormers1、Transformers 关键概念2、Repo 地图注意力机制Feed forward mechanismsPositional embeddingResidual pathsInitializations 3、主要特征4、安装故障排除 一…...

LQ杯当时的WP
RC4 32位程序用IDA打开看看 进行反汇编 RC4提示,就是一个加密 在sub_401005函数中找到输出的变量,并且立下断点 动调 Packet 字符串搜索flag 看到是给192.168.11.128发送了cat flag的命令 看到它回传 Base64加密了 解一下密码就可以 CC 密码这…...

数据结构与算法学习笔记三---栈和队列
目录 前言 一、栈 1.栈的表示和实现 1.栈的顺序存储表示和实现 1.C语言实现 2.C实现 2.栈的链式存储表示和实现 1.C语言实现 2.C实现 2.栈的应用 1.数制转换 二、队列 1.栈队列的表示和实现 1.顺序队列的表示和实现 2.链队列的表示和实现 2.循环队列 前言 这篇文…...

web入门——导航栏
本专栏内容代码来自《响应式web(HTML5CSS3Bootstrap)》教材。 导航栏 实现代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…...

基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 扩散映射(Diffusion Maps) 4.2 卡尔曼滤波 4.3 基于梯度流的扩散映射卡尔曼滤波(GFDMKF) 5.完整程序 1.程序功能描述 基于梯度流的扩散…...
Flutter 中的 ListTile 小部件:全面指南
Flutter 中的 ListTile 小部件:全面指南 在Flutter中,ListTile是一个用于快速创建列表项的组件,它通常用于ListView中,以展示包含文本、图标、开关、滑块等元素的行。ListTile不仅使得界面看起来美观,而且提供了一种简…...

Kubernetes——CNI网络组件
目录 一、Kubernetes三种接口 二、Kubernetes三种网络 三、VLAN与VXLAN 1.VLAN 2.VXLAN 3.区别 3.1作用不同 3.2vxlan支持更多的二层网络 3.3已有的网络路径利用效率更高 3.4防止物理交换机Mac表耗尽 3.5相对VLAN技术,VXLAN技术具有以下优势 四、CNI网…...

对关系型数据库管理系统的介绍
1.数据库的相关介绍 关系型数据库管理系统:(英文简称:RDBMS) 为我们提供了一种存储数据的特定格式,所谓的数据格式就是表, 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成…...

Nodejs 第七十一章(libuv)
libuv 在Node.js中,libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的,它利用libuv来处理底层的异步操作,如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色: 事件循环&a…...
mysql实战题目练习
1、创建和管理数据库 创建一个名为school的数据库。 列出所有的数据库,并确认school数据库已经创建。 如果school数据库已经存在,删除它并重新创建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…...
Linux 案例命令使用操作总结
在信息技术日新月异的今天,Linux以其开源、稳定、高效的特性,逐渐成为了众多专业人士的首选操作系统。然而,关于Linux知识的学习,却常常陷入一个误区——许多人认为,掌握Linux就是死记硬背各种命令和参数。这种观念&am…...
图的拓扑序列(DFS2)
reference way:在图里面能延伸的越远,deep越大,说明它能从自己延伸很长到别的节点(别的节点一定有入度),它越可能没有入度。 way:感觉和DFS1差不多,只是从远变成了多。 #include&l…...

2024年小学生古诗文大会备考:吃透历年真题和知识点(持续)
根据往年的安排,2024年小学生古诗文大会预计这个月就将启动。该如何备考2024年小学生古诗文大会呢?根据往期的经验,只要吃透这些真题和背后的知识点,通过上海小学生古诗文大会的初选(初赛)一点问题都没有。…...

SystemC学习使用记录
一、概述 对于复杂的片上系统,在进行RTL编码前,需进行深入的系统级仿真,以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费,所进行的这些仿真要求在芯片的仿真模型上运行大量的软件,…...

Github20K星开源团队协作工具:Zulip
Zulip:让团队协作的每一次交流,都精准高效。- 精选真开源,释放新价值。 概览 随着远程工作的兴起和团队协作的需求不断增加,群组聊天软件成为了日常工作中不可或缺的一部分。Zulip 是github上一个开源的团队协作工具,…...
C语言基础-标准库函数
C语言的标准库函数是由C语言标准库(如C99、C11等)提供的一系列预定义函数,这些函数通常用于执行常见的编程任务,如字符串操作、内存管理、数学计算、文件操作等。通过使用标准库函数,程序员可以更加高效地编写C语言程序…...

「51媒体」家居生活发布会,展览展会有哪些媒体邀约资源
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 家居生活类媒体包括多种类型,包括门户网站家居生活消费频道,专业的家居消费生活门户,以及行业媒体,平面媒体,KOL和意见领袖。下…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...