文章目录

  • 方法一:主要用到el-table的selection-change事件函数
  • 方法二:主要用到el-table的select和select-all事件函数

前言:对列表项进行批量操作时,实现类似下图的效果,有两种方法

方法一:主要用到el-table的selection-change事件函数

优点:简单
缺点:如果存在分页,进入别的分页,selection清空
html

<el-table  size="mini" :v-loading="loading.table" :data="listResult" :row-key="getRowkey"  @selection-change="selectL" ref="multipleTable"  align="center" max-height="200" >

js

// 选中添加/不选中删除
selectL (selection, row) {this.listSelect = selection;this.listSelectId = selection.map(item => item.id)
},

方法二:主要用到el-table的select和select-all事件函数

  • 优点:切页后,被选项依然存在,即支持切页保留被选项,被选项回显
    支持切页搜索
  • 知识点:
  1. 定义selectAllCheck:0,//奇选偶非选判定当前列表数据项是否为全选状态
  2. toggleRowSelection():设置待选列表的数据项的默认选中,需要页面渲染完毕之后才有效,因此需要放在this.$nextTick
  3. 判断selection/this.listResult中的数据项是否在已选列表listSelect中时,直接用数据项itemif(this.listSelect.indexOf(item) === -1)无效,通过idif(this.listSelectId.indexOf(item.id) === -1)判断有效(不知道为什么)
  • 代码
<el-table  size="mini" :v-loading="loading.table" :data="listResult" @select="selectL" @select-all="selectAll" ref="multipleTable"  align="center" max-height="200" >
data(){return{listResult: [],listSelect: [],listSelectId: [],loading1: {table: true},pageInfoResult: {pageNum: 1,pageSize: 10,total: 10},selectAllCheck:1,//奇非全偶已全}
}
// 查询选择列表
fetchSelectAssets() {this.loading1.table = truethis.search = Object.assign({}, this.pageInfoResult)listAssetinfo(this.search).then(res => {this.listResult = res.rows// 设置listSelect中存在的数据项默认选中this.$nextTick( ()=> {this.listResult.forEach(item => {if(this.listSelectId.indexOf(item.id)!=-1){this.selectAllCheck = 2this.$refs.multipleTable.toggleRowSelection(item);}else{this.selectAllCheck = 1}})})this.pageInfoResult.total = res.totalthis.loading1.table = false})
},
// 选中添加/不选中删除---点击全选
// 选中添加/不选中删除---点击全选
selectAll (selection) {if(this.selectAllCheck%2){console.log(this.selectAllCheck, this.selectAllCheck%2,'未全选')selection.forEach((item, index) => {if(this.listSelectId.indexOf(item.id) === -1){this.listSelect.push(item)this.listSelectId.push(item.id)}})}else {console.log(this.selectAllCheck, this.selectAllCheck%2,'已全选')this.listResult.forEach((item, index) => {const i = this.listSelectId.indexOf(item.id)if(i !== -1){this.listSelect.splice(i, 1)this.listSelectId.splice(i,1)}})}this.selectAllCheck++
},
// 选中添加/不选中删除---点击行
selectL (selection, row) {if (event.target.checked) {this.listSelect.push(row)this.listSelectId.push(row.id)if(selection.length == this.listResult.length){  //判断是否当前页面的数据项是否已全部被选中this.selectAllCheck = 2}} else {this.selectAllCheck = 1//当前页面的数据项已经不是全部被选中for (let i in this.listSelectId) {if (row.id === this.listSelectId[i]) {this.listSelect.splice(i, 1)this.listSelectId.splice(i, 1)}}}
},
  • 效果
  1. 点击添加和全选添加
  2. 切页保存已选项和切页回显

elementUI table 获取已勾选的行的数据相关推荐

  1. Vue Element-ui table隐藏表头勾选框,多选框改单选框

    在table中添加class = "table-style" 在style里添加 样式 .table-style /deep/ .el-table-column--selectio ...

  2. elementUI中的el-table勾选框设置默认勾选、禁用

    elementUI中的el-table勾选框设置默认勾选.禁用 最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark= ...

  3. 饿了么UI elementUI中的el-table勾选框设置默认勾选、禁用

    最近项目中有这个一个需求:请求后端列表数据,根据数据中remark值自动设置table的勾选框的勾选状态及禁用状态, 如果remark="1",是勾选状态且该勾选框变为禁用状态:反 ...

  4. Vue + Element + Table 分页选择勾选 和取消勾选的问题

    Vue + Element + Table 分页选择勾选 和取消勾选的问题 问题描述: 需求是这样的===>表格前面每条数据都有复选框吧 然后表格有很多页 , 我从第一页选取N条数据 再去其他页 ...

  5. U盘文件被隐藏,隐藏的项目已勾选还是无法显示

    U盘文件被隐藏,隐藏的项目已勾选还是无法显示 新建一个.cmd的文件 文件内容如下 for /f "delims=?" %%a in ('dir /a /b') do attrib ...

  6. 小程序 报request:fail invalid url 不校验合法域名已勾选

    红色框住的是正常的   上面那个使用报错了   请问怎么回事???------原因在链接Url后面 多了空格 1.首先你要查看链接地址 2.  勾选小程序  不校验合法域名.web-view(业务域名 ...

  7. Vue3 - Element plus 实现 “带分页“ 表格组件,实现跨页进行 “分页勾选“ 的多选功能(解决分页表格组件 <el-table> 跨页后已前勾选的行自动消失问题)详细示例解决教程

    前言 在 Vue3 项目中,使用 Element Plus 组件库的表格组件时,出现了跨页勾选复选框消失的问题. 本文实现了 vue3 中 element plus 表格组件 <el-table ...

  8. 【PHPWord】如何解决PHPWord的输出checkbox复选框并设置checked已勾选

    目录 一.需求 二.基于XML的实现方式 三.兼容性强的实现方式 三.总结 一.需求 对于生成Word文档来说,复选框的勾选状态和非勾选状态的展示是一个非常常见的问题. 需要用到复选框的文档大概有这几 ...

  9. Element 根据勾选导出Excel表格数据

    1. npm安装依赖包 npm install vue-json-excel 2.项目入口文件引进注册并且使用 import JsonExcel from 'vue-json-excel'Vue.co ...

最新文章

  1. Linux下关闭和开启IPv6的方法
  2. Mongodb异常关闭重启失败解决
  3. block 实现原理详解(一)
  4. python连接数据库示例(东西写得很详细,剽过来了)
  5. Intel 平台编程总结----缓存的优化
  6. 【网络安全】针对 HTTP/2 协议的HTTP Desync攻击
  7. html5编辑文档,HTML5带各种趣味动画的文本编辑器
  8. Android中style和theme的区别
  9. 科技圈自媒体达人吴恩达又双叒叕刷屏了 这次是因为Deeplearning.ai
  10. php 用户中心 框架,OpenCenter —— PHP 通用用户中心框架【国人开发,代码托管在 Git@OSC】...
  11. 主板电源开关接口图解_主板跳线接法示意图,超详细适合DIY新手
  12. 周立功USBCAN-II的Python调用
  13. 达梦数据库DCA培训总结
  14. 在windows 10中输入法语等语言的特殊字符
  15. 获取网页视频,日常下载工具推荐——XDM
  16. 4.4 赋值运算符,4.5 递增和递减运算符
  17. RocketMQ-broker启动流程详解
  18. Google play上架规则_谷歌应用商店上架审核
  19. 淘宝店铺如何好评置顶,如何通过好评留住客户?
  20. DD-WRT 的优点

热门文章

  1. java-php-python-ssm基于企业客户管理系统计算机毕业设计
  2. redis面试必备的十大面试题
  3. 高效读书的几个建议(写在信息泛滥的时代)
  4. 将uniAPP项目导入到微信开发者工具中保姆级教程
  5. Java重定向携带参数中文乱码问题
  6. 搜索技术【广度优先搜索】 - 嵌套广度优先搜索 【POJ No. 1475】 推箱子 Pushing Boxes
  7. K-means 算法【基本概念篇】
  8. [知识图谱]-Neo4j图数据库安装及药材图谱实现
  9. 服务器架构:x86、RISC、ARM谁主江湖?
  10. (移动方向状态标志)P1518 [USACO2.4]两只塔姆沃斯牛 The Tamworth Two题解