vue+element Table切换页码时被选中状态不变

需求分析
在做项目的时候遇到了一个这样需求,用户在选择没有结单的Table的时候,可以选择多个没有支付的订单进行加入一个统一结账的“购物车”中,那么可以选择任意页的,这个时候就遇到一个我们经常会遇到的问题了,那就是当我们切换页码的时候,之前用户选择的一些选项的选中状态就会消失了,这个是我们接受不了的,因为这样的话,其实业务是错的,所以今天就简单的说一下怎么解决这样的问题,同时写一下怎么根据列中的某一项进行判断该行的复选框是不是可以被选中的状态。
 

selectable:仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选,function类型

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

row-key:行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。 funtion类型

我们主要是用这个三个参数解决这个问题。

源码

<el-table
            ref="multipleTable"
            @selection-change="handleSelectionChange"
            :data="tableData_no_statement"
            stripe
            size="mini"
            :row-key="getRowKeys"
            :cell-style="{textAlign:'center'}"
            :header-cell-style="{background:'#303A41',color:'#fff',fontSize:'x-small',textAlign:'center'}"
            style="width: 100%;margin-top: 10px">
            <el-table-column
              type="selection"
              :selectable="selectable"
              :reserve-selection="true"
              width="55">
            </el-table-column>
</el-table>
  /**
    * @getRowKeys 设置回显的函数
    * @parmas row 当前行的数据,需要一个唯一的标识来标记是哪一个被选中了
    */
     getRowKeys(row) {
          return row.id;
     },
     /**
       * @selectable 设置不可点击的状态
       * @param row.pay_status === 0 是未支付的状态,这样的状态是可以选择的。未支付的是可以被选中的,已支付的是不可以被选中的
       */
      selectable(row,index){
        if(row.pay_status === 0){
           return true;
        }else{
           return false;
        }
      },

 

总结 简易型代码

<el-table :row-key="rowKey">
     <el-table-column type="selection" :reserve-selection="true"></el-table-column>
</el-table>
methods: {
   rowKey (row) {
      return row.id
    }
}

也可清空 选中状态

this.$refs.multipleTable.clearSelection();

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值