美文网首页
element--el-table的所选功能使用(避坑)

element--el-table的所选功能使用(避坑)

作者: 学无止境_cheer_up | 来源:发表于2022-11-02 16:49 被阅读0次
elementUI的el-table多页面选checkbox回显,拿到既可以使用

关于el-table的多选,相信只要做过项目的朋友都会用过,这其中有一个坑,是很大概率会踩到的,就是第一页选中了之后,切到第二页选择完之后,切换回第一页发现第一页选择的不见了,怎么办???
这个坑,老实说不难,但由于经常碰到,我总结了一下

  1. 利用 reserve-selection与row-key结合
    使用方法:
    1)在表格加上属性 :row-key="(row) => { return row.id }"
    row-key绑定一个函数,该函数返回每行数据的唯一标识
    2)在多选的column标签加上 :reserve-selection=“true” 开启
    大功告成!是不是很快?
    优点:快捷简单方便
    缺点:1. elementUI的版本不能太低
    2.某些需求无法满足,比如先给你一组选中的数据

2.选中数据后台获取回显
1.获取后台数据

 // 调用列表表格
    getList (val) {
      this.loading = true
      api
        .quotedPriceAgentList({
          pageSize: this.size,
          pageNum: this.page,
          order: this.order,
          sort: this.sort,
          currencyName: this.formSearch.currencyName,
          name: this.formSearch.name,
          remark: this.formSearch.remark,
          id: val.rolesId,
          agentId: val.uid
        })
        .then((res) => {
          if (res.code === 200) {
            this.tableData = res.data.list
            this.total = res.data.total
            this.loading = false
            // 多选框回显
            this.rowMultipleChecked(res.data.list)
          } else {
            this.$message({ type: 'error', message: res.msg })
          }
        })
    },

2.多选框回显方法

rowMultipleChecked (data) {
      if (data.length) {
        this.$nextTick(function () {
          data.forEach(item => {
            // 如果数据中的bindingStatus === true的话 让这一列选中
            if (item.bindingStatus === true) {
              // multipleTable 是这个表格的ref属性 true为选中状态
              this.$refs.multipleTable.toggleRowSelection(item, true)
            } else {
              this.$refs.multipleTable.toggleRowSelection(item, false)
            }
          })
        })
      }
    },

3.分页调用回显方法

    // 列表页数事件
    handleChange (val) {
      this.size = val
      this.getList(this.row)
      // 多选框回显
      this.rowMultipleChecked(this.tableData)
    },

大坑:

elementUI中el-table多选表格数据删除后,再次删除时复选框依旧是选中状态
解决:查了文档得出在清空之后所选数据之后要另外添加一句。dataTable是table用ref添加的名字。clearSelection()是elementUI内部的方法
在删除方法的最后添加一段代码

 this.$refs.dataTable.clearSelection(); //清除之前的选中状态

相关文章

  • Lodash使用避坑小结

    Array篇 1. 使用 Lodash 的 remove 方法删除数组项后,视图不更新 想从数组中按照某种筛选条件...

  • ios 中使用Opencv进行视觉跟踪效果

    功能描述 使用openCV对所选物体或区域进行视觉跟踪 步骤一: 编译opencv.framework1.1. 首...

  • 避坑

    Day10/21 【21天阅读挑战】 【书籍名称】 《我不是教你诈1》 作者:[美]刘墉 【阅读感受】 又到了毕业...

  • 避坑

    人这一辈子着实不容易,有时太平顺的路走着走着,忘了低头看路,就掉进坑里。有些坑浅,磕碰得灰头土脸鼻青脸肿的,...

  • 避坑

    前阵子读一本书 说中国的男人很惨 没有更年期 我就问我爸爸男人有没有更年期 他说没有 然后想起以前不会业务的老大 ...

  • [避坑]

    1 组件中引用canvas【一点要加this】 2 如在组件外调用组件内的canvas需要绑定上下文

  • 避坑

    1、 账号昵称、头像、个性签名、主页背景图等都不能出现违规内容。2、 新号一开始不要发布太长视频,完播率会很差,难...

  • 避坑

    一朝被蛇咬,不要十年怕井绳。踩过坑就要学会避坑,而不是怕坑。不重新开始,你的失败经历将永远贴上失败标签,未来你做任...

  • 使用gomail发送邮件 - - 避坑

    做电商的项目时常常会拿到收到订单给发一封提醒邮件的需求,这个工作完全可以让服务器自动执行,下面就介绍一下在Go中发...

  • Hive SQL使用技巧&避坑

    避坑 1.不要去执行,肉眼看,这条SQL查询的结果是什么?SELECT CAST("600.00" AS BIGI...

网友评论

      本文标题:element--el-table的所选功能使用(避坑)

      本文链接:https://www.haomeiwen.com/subject/vjsetdtx.html