zoukankan      html  css  js  c++  java
  • vue+element Table切换页码时被选中状态不变

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

    1 selectable:仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选,function类型
    2  
    3 reserve-selection:仅对 type=selection 的列有效,类型为 Boolean,为 true 则会在数据更新之后保留之前选中的数据(需指定 row-key) boolean类型
    4  
    5 row-key:行数据的 Key,用来优化 Table 的渲染;在使用 reserve-selection 功能与显示树形数据时,该属性是必填的。类型为 String 时,支持多层访问:user.info.id,但不支持 user.info[0].id,此种情况请使用 Function。 funtion类型

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

    源码

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

    总结 简易型代码

    1 <el-table :row-key="rowKey">
    2      <el-table-column type="selection" :reserve-selection="true"></el-table-column>
    3 </el-table>
    4 methods: {
    5    rowKey (row) {
    6       return row.id
    7     }
    8 }

    也可清空 选中状态

    this.$refs.multipleTable.clearSelection();

  • 相关阅读:
    Java虚拟机基础
    排序系列之插入排序
    排序系列之冒泡排序
    成为优秀程序员的10个要点
    23个适合Java开发者的大数据工具和框架
    成为一个更优秀的开发者的10种方式
    Mybatis自动生成实体类
    Maven-SSM项目pom.xml配置以及springmvc配置以及mybatis配置及web.xml配置
    SSM项目layui分页实例
    图书管理系统(毕业论文)
  • 原文地址:https://www.cnblogs.com/xiaozhu-zhu/p/11976257.html
Copyright © 2011-2022 走看看