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

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(); //清除之前的选中状态
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容