Element ui 中Table分页多选

这篇具有很好参考价值的文章主要介绍了Element ui 中Table分页多选。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求描述

表格有分页需要多选,某page选中的数据,当再次到这个page的时候, 之前选中的数据需要是选中状态。比如在首页选中一些数据之后, 跳到第2页, 然后再回首页,首页之前选中的数据要是选中状态。

实现思路

1. Table 用到的事件:
@select : 当用户手动勾选数据行的 Checkbox 时触发的事件. 参数(selection, row), selection是一个数组, 所有选中的数据, row是点击该行的数据
@select-all : 当用户手动勾选全选 Checkbox 时触发的事件. 参数(selection), selection是一个数组, 选中的所有数据

2. Table 用到的Methods :
toggleRowSelection : 用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) 参数(row, selected)

3. 描述

  1. 一个数组变量 multipleSelection放选中的数据 multipleSelection = [ ]
  2. 点击table 每列数据中的 checkbox 触发select事件时 (定义的方法selectARow) :
    首先判断状态是取消还是选中, 参数(selection, row), 如果selection数组中包含row, 且 selection长度不为空. 则当前点击是选中状态, 反之则是取消;
    选中: 将数据添加到multipleSelection中;
    取消: 将数据从multipleSelection中删除;
  3. 点击table中全选的checkbox 触发select-all事件 (定义的方法handleSelectAll): 首先判断状态是全选还是取消全选, 参数(selection)
    如果selection的长度和表格数据(tableData)的长度一致, 则是全选; 反之是取消全选
    全选: 将selection的数据合并到multipleSelection 中;
    取消全选: 将表格数据tableData 每一条从multipleSelection中删除;
  4. 当获取表格数据tableData 的时候, 判断每列数据是否是选中状态, 通过

this.$refs.contactTable.toggleRowSelection(item, true) 选中;

判断tableData 的每条数据是否在multipleSelection 中, 如在 获取tableData的那条数据item, 通过

this.$refs.contactTable.toggleRowSelection(item, true) 选中文章来源地址https://www.toymoban.com/news/detail-779422.html

相关代码

//html
<el-table v-loading="contactLoading" ref="contactTable" :data="contactData" 
 @select-all="handleSelectAll" @select="selectARow">
  <el-table-column type="selection"  width="50" />
  <el-table-column label="全选" prop="name" show-overflow-tooltip width="100px"> </el-table-column>
</el-table>
<el-pagination class="align_center" v-show="contactTotal>6"
  @current-change="_contactList"
  :current-page.sync="contactParams.pageNum"
  :page-size="6"
  layout="total, prev, pager, next"
  :total="contactTotal">
</el-pagination>
//js 三个关键方法
selectARow(val,row){ //单选Checkbox的事件
   let selectBool = val.length && val.indexOf(row) !== -1   //当前点击是否勾选
   if(!selectBool){  //取消勾选
       this.multipleSelection.forEach((item,i) => {
           if(item.id == row.id){
               this.multipleSelection.splice(i,1)
           }
       })

   }else{ //选中
       this.multipleSelection.push(row)
   }
},
handleSelectAll(val){  //全选 Checkbox的事件
   if(val.length == this.contactData.length){ //全选
       this.multipleSelection = this.multipleSelection.concat(val)
       //去重
       let obj = {}
       let result = []
       this.multipleSelection.forEach(item => {
           if(!obj[item.id]){
               result.push(item)
               obj[item.id] = true
           }
       })
       this.multipleSelection = result

   }else{ //取消全选
       this.contactData.forEach(item => {
           this.multipleSelection.forEach((multItem,i) => {
               if(item.id == multItem.id){
                   this.multipleSelection.splice(i,1)
               }
           })
       })
   }
},
// 获取table数据的时候,给每行的checkbox赋值
_contactList(val) {
  this.contactLoading = true;
  if(val){
    this.contactParams.pageNum = val
  }
  contactList(this.contactParams).then((res) => {
    this.contactData = res.data.rows
    this.contactTotal = res.data.total
    this.contactLoading = false
    this.$nextTick(()=>{
        this.contactData.forEach(item => {
            this.multipleSelection.forEach(multItem =>{
                if(multItem.id == item.id){
                    this.$refs.contactTable.toggleRowSelection(item, true);  //选中这个数据
                }

            })
        })
    })
  });

},

到了这里,关于Element ui 中Table分页多选的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 随手记:vue2 使用element UI table表格的单选多选反选思路

    selection-change 参数只有一个selection : 可以获取到当前勾选的row的数据,勾选自动行程数组 @selection-change=\\\"handleSelectionChange\\\"    // 多选框选中数据     handleSelectionChange(selection) {         //selection 是勾选中的数组     },  select 参数 selection 选中的数组  row 当前选中的单条数

    2024年04月26日
    浏览(36)
  • elements ui vue table 多选操作

    前言:总结一下 elements ui vue 框架使用中出现的问题,目前来看vue 的开发代码的质量和效率 要高于传统的 js 框架,至少在管理系统的开发上面,代码量相对比较小 可以参考 elements ui 官网 https://element.eleme.io/#/zh-CN/component/table#table-column-scoped-slot 具体在实际使用中基本都是带分

    2024年02月16日
    浏览(34)
  • Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页

    Vue+Element-UI 实现前端分页功能,利用el-table和el-pagination组件实现表格前端分页:         当table的数据量比较大的时候,一个屏幕展示不出全部的数据,这个时候就需要分页显示。而多数情况下都是做的后端分页,就是将分页参数和查询条件一并传到后端,后端将当前页要

    2024年01月20日
    浏览(55)
  • 【Vue Element-ui el-table组件 实现跨分页全选 可全选中当前页 也可选中全量数据】

    前端模拟数据示例,无需后台接口,复制粘贴即可看到效果。 element-ui table里的全选功能只会全选当前页的所有数据 当table有分页功能的时候实现跨页全选 ①为table添加select方法(当用户手动勾选数据行的 Checkbox 时触发的事件) 两个参数 selection,row 选中的数据 最后一个选中

    2024年02月02日
    浏览(53)
  • element-ui的el-table表格复选框只能单选,不可多选

    element的el-table表格复选框只能选中一条,选择下一条,上一条去掉勾选。使用文档中select方法,el-table绑定一个ref。具体代码实现如下 toggleRowSelection:用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中) 

    2024年02月11日
    浏览(58)
  • element ui el-table展示列表,结合分页+过滤功能

    vue+element-ui实现的列表展示,列表分页,列表筛选功能 el-table模块下面是分页器代码 el-pagination/el-pagination 分页器  layout 属性表示组件布局 设置 layout ,表示分页器需要显示的内容,用逗号分隔,布局元素会依次显示。 prev 表示上一页, next 为下一页, pager 表示页码列表,除

    2024年01月25日
    浏览(56)
  • Element UI 多选表格【翻页多选】全能版(含翻页多选数据反显、toggleRowSelection失效的原因解析和解决方案)

    data中定义 selectedList 数组保存选中的数据 在页面初次渲染、翻页、切换每页数据数量等每次重新获取表格数据渲染表格时,都根据 selectedList 勾选表格中已经选中的行 切换单行勾选状态时,判断是选中还是取消选中,选中则增加选中项,取消选中则移除选中项。 切换全选和

    2023年04月10日
    浏览(35)
  • 【Vue】Vue 使用 Print.js 打印选中区域的html,用到的是Element ui table表格,解决页面样式不出现或者table表格样式错乱问题!!!

    需求 : 打击打印按钮,文字内容以及表格中的内容 解决方案 加上这句就好了!完美! 一、因为表格数据过多,之前加了表格滚动条,但是打印出来 会把表格上的滚动条也打印出来,所以这里改成了 给弹框加滚动条,去掉表格中的滚动条 2.1 原因: table-layout: fixed导致的,

    2024年02月09日
    浏览(70)
  • element UI table横向树结合checkbox进行多选,实现各个节点的[全选,半选,不选]状态附带模拟数据

    步骤一、后端返回tree格式数据,先结合element-ui的table的数据格式要求,将tree转换成table数据,进行行列的合并。 步骤二、拿到数据,递归遍历后将选中数据的id保存,进行回显操作。 步骤三、将每个checkbox进行绑定方法,此方法将作为分叉,如果当前checkbox属于父亲节点,判

    2024年02月08日
    浏览(62)
  • 前端vue3+element plus 分页table排序功能实现

    我有如下所示的一个table,数据data是一个computed计算属性,一般情况下筛选使用element的sortable属性就可以了,可查看Element - The world\\\'s most popular Vue UI framework 但我的 table 是一个分页的 table ,当我使用 sortable 时发现,它只是对当前页的数据进行排序,但这并不是我需要的,我的

    2024年02月14日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包