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

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-columntype 属性设置为 "selection" 来启用勾选选择。
  • @selection-change="handleSelectionChange" 监听选择变化事件,并将选中的行数据数组作为参数传递给 handleSelectionChange 方法。
  • handleSelectionChange 方法接收一个数组 val,它包含了所有当前被勾选(选中)的行数据。
  • multipleSelection 数据属性用于在组件内部存储当前选中的行数据,但这并不是必须的,你可以根据需要在 handleSelectionChange 方法中直接处理这些数据。

四、el-table跨页勾选

在 Element UI 的 el-table 组件中实现跨页勾选功能,需要确保在分页时能够保留之前页面的选择状态。这通常涉及到在表格组件上设置一些特定的属性和监听事件,并结合后端分页接口的数据处理。

以下是实现 el-table 跨页勾选功能的基本步骤:

  1. 添加 row-key 属性:在 el-table 上设置 row-key 属性,该属性用于指定表格中每一行的唯一标识符,通常可以是行数据的某个唯一字段(如 ID)。
<el-table :row-key="getRowKey" ...>...
</el-table>

在 Vue 实例的 methods 中定义 getRowKey 方法:

methods: {getRowKey(row) {return row.id; // 假设每行数据都有一个唯一的 id 字段}
}
  1. 设置 reserve-selection 属性:在 el-table-columntype="selection" 上设置 reserve-selection 属性为 true,这将使得在分页时能够保留之前的选择状态。
<el-table-column type="selection" reserve-selection ...>
</el-table-column>
  1. 处理分页数据:确保后端分页接口返回的数据包含之前页面选中行的状态信息。这通常需要在后端进行实现,使得在每次请求新的分页数据时,后端能够知道哪些行是之前被选中的。
  2. 监听 selection-change 事件:在 el-table 上监听 selection-change 事件,并在事件处理函数中更新当前选中的行数据。这通常用于在前端维护一个表示当前选中行数据的数组。
<el-table ... @selection-change="handleSelectionChange">...
</el-table>

在 Vue 实例的 methods 中定义 handleSelectionChange 方法:

methods: {handleSelectionChange(val) {this.multipleSelection = val; // 更新当前选中的行数据数组// 可以在这里进行其他操作,如向后端发送更新选中状态的请求等}
}
  1. 注意事项
  • 如果后端分页接口不支持跨页勾选功能,你可能需要在前端自行实现一种机制来跟踪和保存选中状态。例如,可以使用浏览器的 localStorage 或 Vuex 等状态管理库来保存选中状态。
  • 当用户切换页面或进行其他可能改变表格数据的行为时,需要确保之前的选择状态被正确地保留和恢复。这可能需要你在 Vue 组件的生命周期钩子(如 createdmountedupdated 等)中进行一些额外的处理。

完整代码

<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>

五、热门文章

  1. 【温故而知新】vue运用之探讨下单页面应用(SPA)与多页面应用(MPA)
  2. 【温故而知新】探讨下对vue的mixin的理解
  3. 【温故而知新】vue修饰符有哪些
  4. 【温故而知新】vue组件间通信的实现方式
  5. draggable实现拖拽、禁止拖拽、拖拽后元素重新排序到指定位置
  6. router路由按需加载
  7. vue页面导出Word文档(含图片)
  8. Vue拖拽组件awe-dnd
  9. el-tabs事件绑定(Element UI)

相关文章:

Element-ui el-table组件单选/多选/跨页勾选讲解

文章目录 一、el-table介绍二、el-table单选三、el-table多选四、el-table跨页勾选五、热门文章 一、el-table介绍 el-table 是 Element UI&#xff08;一个基于 Vue.js 的高质量 UI 组件库&#xff09;中的一个组件&#xff0c;用于展示表格数据。通过 el-table&#xff0c;你…...

CentOS 安装 SeaweedFS

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

Redis如何避免数据丢失?——AOF

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

xFormers

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

LQ杯当时的WP

RC4 32位程序用IDA打开看看 进行反汇编 RC4提示&#xff0c;就是一个加密 在sub_401005函数中找到输出的变量&#xff0c;并且立下断点 动调 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&#xff08;HTML5CSS3Bootstrap&#xff09;》教材。 导航栏 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…...

基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 扩散映射&#xff08;Diffusion Maps&#xff09; 4.2 卡尔曼滤波 4.3 基于梯度流的扩散映射卡尔曼滤波&#xff08;GFDMKF&#xff09; 5.完整程序 1.程序功能描述 基于梯度流的扩散…...

Flutter 中的 ListTile 小部件:全面指南

Flutter 中的 ListTile 小部件&#xff1a;全面指南 在Flutter中&#xff0c;ListTile是一个用于快速创建列表项的组件&#xff0c;它通常用于ListView中&#xff0c;以展示包含文本、图标、开关、滑块等元素的行。ListTile不仅使得界面看起来美观&#xff0c;而且提供了一种简…...

Kubernetes——CNI网络组件

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

对关系型数据库管理系统的介绍

1.数据库的相关介绍 关系型数据库管理系统&#xff1a;&#xff08;英文简称&#xff1a;RDBMS&#xff09; 为我们提供了一种存储数据的特定格式&#xff0c;所谓的数据格式就是表&#xff0c; 在数据库中一张表就称为是一种关系. 在关系型数据库中表由两部分组成&#xf…...

Nodejs 第七十一章(libuv)

libuv 在Node.js中&#xff0c;libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的&#xff0c;它利用libuv来处理底层的异步操作&#xff0c;如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色&#xff1a; 事件循环&a…...

mysql实战题目练习

1、创建和管理数据库 创建一个名为school的数据库。 列出所有的数据库&#xff0c;并确认school数据库已经创建。 如果school数据库已经存在&#xff0c;删除它并重新创建。 mysql> create database school; Query OK, 1 row affected (0.01 sec)mysql> mysql> sh…...

Linux 案例命令使用操作总结

在信息技术日新月异的今天&#xff0c;Linux以其开源、稳定、高效的特性&#xff0c;逐渐成为了众多专业人士的首选操作系统。然而&#xff0c;关于Linux知识的学习&#xff0c;却常常陷入一个误区——许多人认为&#xff0c;掌握Linux就是死记硬背各种命令和参数。这种观念&am…...

图的拓扑序列(DFS2)

reference way&#xff1a;在图里面能延伸的越远&#xff0c;deep越大&#xff0c;说明它能从自己延伸很长到别的节点&#xff08;别的节点一定有入度&#xff09;&#xff0c;它越可能没有入度。 way&#xff1a;感觉和DFS1差不多&#xff0c;只是从远变成了多。 #include&l…...

2024年小学生古诗文大会备考:吃透历年真题和知识点(持续)

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

SystemC学习使用记录

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

Github20K星开源团队协作工具:Zulip

Zulip&#xff1a;让团队协作的每一次交流&#xff0c;都精准高效。- 精选真开源&#xff0c;释放新价值。 概览 随着远程工作的兴起和团队协作的需求不断增加&#xff0c;群组聊天软件成为了日常工作中不可或缺的一部分。Zulip 是github上一个开源的团队协作工具&#xff0c;…...

C语言基础-标准库函数

C语言的标准库函数是由C语言标准库&#xff08;如C99、C11等&#xff09;提供的一系列预定义函数&#xff0c;这些函数通常用于执行常见的编程任务&#xff0c;如字符串操作、内存管理、数学计算、文件操作等。通过使用标准库函数&#xff0c;程序员可以更加高效地编写C语言程序…...

「51媒体」家居生活发布会,展览展会有哪些媒体邀约资源

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 家居生活类媒体包括多种类型&#xff0c;包括门户网站家居生活消费频道&#xff0c;专业的家居消费生活门户&#xff0c;以及行业媒体&#xff0c;平面媒体&#xff0c;KOL和意见领袖。下…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...