el-table多选分页回显

el-table多选分页回显

1.多选项添加 :reserve-selection="true"
<el-table-column 
    type="selection" 
    align="center" 
    width="55" 
    :reserve-selection="true"
></el-table-column>

reserve-selection : 仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key

2.设置参数记录已选项selectedList
3.设置el-table的selection-change事件:取消或者选择就会触发该事件
需要考虑:
  1. 在某一页时,第一次选择一项,第二次全选当页,已选项中已存在的某一项不再添加
  2. 先选择一项时,再全选,在取消全选,要删除取消已选项

**注意:**因为做了分页,对于全选和取消全选,都是本页数据的全选,

   //这里的brmOrderId就是row-key,要确保其唯一性
   //tableDataList 表示本页的数据
	handleSelectionChange(rows) {
      // 不存在就添加进去
      rows.forEach(row => {
        if (!this.selectedList.some(item => item.brmOrderId === row.brmOrderId)) {
          this.selectedList.push(row)
        }
      });
      // list是此页中未选项,对于那些选择,再取消的项,需要在selectedList中删除
      const list = []
      this.tableDataList.forEach(item => {
        if (!rows.some(row => row.brmOrderId === item.brmOrderId)) {
          list.push(item)
        }
      });
      list.forEach(item => {
        const index = this.selectedList.findIndex(selectIndex => selectIndex.brmOrderId === item.brmOrderId)
        if (index !== -1) {
          this.selectedList.splice(index, 1)
        }
      })
    },
4.选项回显

**场景:**在第一页中选择了一项,切换到第二页全选,再切换为第一页,要勾选第一页的已选项

**实现:**在获取当前页面数据的时候,与selectedList中的数据对比,如果有已选项,就勾选

代码:

    // rows是selectedList; tableDataList当前页接口返回的数据
	toggleSelection(rows) {
      this.$nextTick(() => {
        setTimeout(() => {
          if (rows && this.tableDataList.length !== 0) {
            this.tableDataList.forEach((dataItem) => {
              rows.forEach(item => {
                if (item.brmOrderId === dataItem.brmOrderId) {
                  // toggleRowSelection是勾选 表中符合要求的选项
                  this.$refs.projectTables.toggleRowSelection(dataItem, true)
                }
              })
            })
          } else {
            // 清空用户的选择
            this.$refs.projectTables.clearSelection();
          }
        }, 0);
      });
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值