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

vue2版本elementUI的table分页实现多选逻辑

1. 需求

我们需要在表格页上实现多选要求,该表格支持分页逻辑。

2. 认识属性

表格属性

参数说明类型可选值默认值
data显示的数据array
row-key行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。Function(row)/String

表格事件

事件名说明参数
selection-change当选择项发生变化时会触发该事件selection

表格方法

方法名说明参数
clearSelection用于多选表格,清空用户的选择
toggleRowSelection用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)row, selected
toggleAllSelection用于多选表格,切换所有行的选中状态-

表格列属性

参数说明类型可选值默认值
type对应列的类型。如果设置了 selection 则显示多选框;如果设置了 index 则显示该行的索引(从 1 开始计算);如果设置了 expand 则显示为一个可展开的按钮stringselection/index/expand
selectable仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选Function(row, index)
reserve-selection仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key)Booleanfalse

3. 具体代码

<template>
<div><el-tablev-if="tableVisible"ref="multipleTable":data="tableData"tooltip-effect="dark"style="width: 100%"row-key="id"@selection-change="handleSelectionChange"><el-table-column:reserve-selection="true":selectable="judgeSelectable"type="selection"width="55"></el-table-column><el-table-columnlabel="id"width="120"><template slot-scope="scope">{{ scope.row.date }}</template></el-table-column><el-table-columnprop="name"label="姓名"width="120"></el-table-column></el-table><el-pagination:current-page="pageNum":page-sizes="[10, 20, 50, 100]":page-size="pageSize"layout="total,  prev, pager, next, sizes, jumper":total="total"@size-change="handleSizeChange"@current-change="handleCurrentChange"/>
</div>
</template>
  export default {data() {return {tableData: [{id: 1,name: '王小虎1'}, {id: 2,name: '王小虎2'}, {id: 3,name: '王小虎3'}, {id: 4,name: '王小虎4'}, {id: 5,name: '王小虎5'}, {id: 6,name: '王小虎6'}, {id: 7,name: '王小虎7'}],multipleSelection: [],total: 0,pageSize: 10,pageNum: 1,tableVisible: true}},created() {this.initData();},methods: {initData() {this.getList();this.getSelectedList();},getSelectedList() {//	当拿到已选列表时,调用toggleSelection传入已选列表},judgeSelectable(row, index) {// 用来区分是否可选return Math.random() > 0.5;},toggleSelection(rows) {if (rows) {rows.forEach(row => {this.$refs.multipleTable.toggleRowSelection(row);});} else {this.$refs.multipleTable.clearSelection();}},handleSelectionChange(val) {this.multipleSelection = val;},getList() {//	获取数据,更新tableData和total},//  分页size变化handleSizeChange(val) {this.pageSize = val;this.getList();},//  当前页面变化handleCurrentChange(val) {this.pageNum = val;this.getList();},//	必须这么处理toggleSelection(rows) {if (rows) {rows.forEach(row => {this.$refs.multipleTable.toggleRowSelection(row);});} else {this.$refs.multipleTable.clearSelection();}},//	批量导入或者其他场景下已选数据已更新,就重新处理下页面内容regetData() {this.total = 0;this.pageNum = 1;this.tableData = [];this.multipleSelection = [];this.tableVisible = false;this.$nextTick(() => {this.tableVisible = true;this.initData();})}}}

4. 解读

分页不需要介绍,主要还是多选说一点。

  1. 表格上必须设置row-key,该字段的值不可重复,这样让表格记住每个数据。
  2. selection-change字段用来监听选择变化,因el-table未提供批量选中方法,故只能调组件上的toggleRowSelection方法一个一个选中。如果需要监听selection-change方法变更记录,最好还是防抖处理,避免初始化一个一个选中导致的数据异常。
  3. el-table-column 使用 type 值为 selection, 该组件上需要设置 reserve-selectiontrue,相关属性解说请看2中解释。属性selectable 则是用来控制是否可选,这个业务功能也要了解下。
  4. 至于具体逻辑可以参考上面代码,有问题来找我。
求关注
在这里插入图片描述
http://www.lryc.cn/news/544052.html

相关文章:

  • AI数字人技术源码开发分享:革新短视频营销策略
  • 实验环境搭建集锦(docker linux ros2+强化学习环境+linux上单片机串口调试)
  • sql调优之数据库开发规范
  • 《Effective Objective-C》阅读笔记(上)
  • ClkLog里程碑:荣获2024上海开源技术应用创新竞赛三等奖
  • 【数据结构进阶】哈希表
  • STM32内存五区及堆栈空间大小设置(启动文件浅析)
  • 微信小程序调用火山方舟(字节跳动火山引擎)中的DeepSeek大模型
  • (八)Java-Collection
  • 从单片机的启动说起一个单片机到点灯发生了什么下——使用GPIO点一个灯
  • C++ | 哈希表
  • leetcode_动态规划/递归 70. 爬楼梯
  • 基于Rook的Ceph云原生存储部署与实践指南(上)
  • C++ Qt常见面试题(4):Qt事件过滤器
  • regionserver实例僵住问题分析
  • 服务器离线部署DeepSeek
  • QT mac系统下qml实现的菜单栏,标准快捷键Delete无作用或失灵的处理
  • redis序列化设置
  • 浅谈C++/C命名冲突
  • 【语音编解码】常用的基于神经网络的语音编解码方案对比
  • PVE 配置显卡直通
  • Kronecker分解(K-FAC):让自然梯度在深度学习中飞起来
  • ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图
  • React + TypeScript 数据模型驱动数据字典生成示例
  • 道可云人工智能每日资讯|深圳将设立人工智能和机器人产业基金
  • [2024年下半年架构师考试真题之论文]
  • 神经网络 - 激活函数(Sigmoid 型函数)
  • 阿里云 | 快速在网站上增加一个AI助手
  • 【操作系统】处理机调度
  • mysql服务层介绍,NOSQL+SQL接口(nosql介绍),语法分析器,预处理器,优化器(优化的必要性,基于成本的优化器),缓存(弊端)