el-table 列筛选

参考文章:
vue实现checkbox点击选择控制element-ui table表单动态列展示与隐藏
vue+element 通过checkbox控制el-table-column的显示或隐藏

第一个写法简单,但是在调节列样式时(比如状态的颜色),就不太方便了。
第二个更适用一些,但是在强制更新数据时会产生表格抖动,参照第一个博客中的更新方式会更好一些。

<!-- 筛选按钮 -->
<el-popover placement="left-start" title="列筛选" trigger="click">
  <el-checkbox-group v-model="checkList" @change="columnFilter">
  <el-checkbox v-for="(item, index) in tableList" :label="item.field">{{item.title}}</el-checkbox>
  </el-checkbox-group>
  <el-button slot="reference"><i class="el-icon-menu"></i></el-button>
</el-popover>

<el-table
  :data="dataList"
  :key="key"
>
  <el-table-column 
    prop="serialNumber" 
    label="工单编号" 
    v-if="columnShow.serialNumber" 
  >
  </el-table-column>
  <el-table-column 
    prop="systemName" 
    label="系统名称" 
    v-if="columnShow.systemName" 
  >
  </el-table-column>
  
</el-table>
key: 1, // table key
tableList: [
  {title: '工单编号', field: 'serialNumber'},
  {title: '系统名称', field: 'systemName'}
],
checkList: [],//筛选列选中的数据列表
columnShow: {},//控制筛选列显示隐藏
mounted: function () {
  this.columnFilter()
},
methods: {
  //列筛选
  columnFilter(val) {
    if (val == undefined) {
      this.tableList.forEach(element => {
        // 默认选中全部列
        this.checkList.push(element.field);
        this.columnShow[element.field] = true;
      });
    } else {
      Object.keys(this.columnShow).forEach(element => {
        this.columnShow[element] = false;
      });
      this.checkList.forEach(element => {
        // 判断是否有某个字段
        if (element in this.columnShow) {
          this.columnShow[element] = true;
        }
      });
    }
    this.key = this.key + 1
  }
},
/* 列筛选复选框 */
.el-popover .el-checkbox {
  display: block;
  margin-bottom: 5px;
}

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LXang723

如果用到的话,一键三连。。。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值