zoukankan      html  css  js  c++  java
  • 根据下拉框中选择的列在下面表格中显示对应的列

     效果上图所示,根据在下拉框中筛选要显示的列,则在下面表格中就会显示对应的列。

    实现代码:

    1.在页面中显示按钮,通过点击按钮控制下拉框的显示与隐藏

            <div class="butt_select">
              <el-button type="primary" icon="el-icon-menu" @click="showSelect" class="selects_butt">
                <i class="el-icon-caret-bottom"></i>
              </el-button>
              <el-checkbox-group v-model="colOptions" v-show="selects">
                <el-checkbox v-for="item in colSelect" :key="item" :label="item" />
              </el-checkbox-group>
            </div>
    
         //下拉框隐藏-显示
          showSelect(){
            this.selects = !this.selects;
          }

     2.data中添加对应的数据

              colOptions: ['用户id', '用户名称', '用户状态', '创建时间', '操作'],  //多选框已选择的择项
              colSelect: ['用户id', '用户名称', '用户状态', '创建时间', '操作'],    //多选框中的所有选项
              colData: [
                { title: '用户id', istrue: true },
                { title: '用户名称', istrue: true },
                { title: '用户状态', istrue: true },
                { title: '创建时间', istrue: true },
                { title: '操作', istrue: true }
                ],
              selects: false, 

    3.需要控制表格中列的显示与隐藏,则需要对列添加v-if语句

            <el-table
              ref="multipleTable"
              :data="tableData"
              tooltip-effect="dark"
              style=" 100%"
              :header-cell-style="{background:'#eff3f8'}"
              @selection-change="handleSelectionChange">
              <el-table-column
                type="selection"
                width="150"
                align="center">
              </el-table-column>
              <el-table-column
                label="用户id"
                prop="userId"
                width="150"
                v-if="colData[0].istrue"
                align="center">
              </el-table-column>
              <el-table-column
                prop="userName"
                label="用户名称"
                width="350"
                v-if="colData[1].istrue"
                align="center">
              </el-table-column>
              <el-table-column
                prop="status"
                v-if="colData[2].istrue"
                label="用户状态"
                align="center">
                <template scope="scope">
                  <el-switch
                      active-color="#5B7BFA"
                      inactive-color="#dadde5"
                      active-value=1
                      inactive-value=0
                      v-model="scope.row.status"
                      @change=changeStatus(scope.$index,scope.row)                
                  >
                  </el-switch>
                </template>
              </el-table-column>
              <el-table-column
                prop="createTime"
                label="创建时间"
                align="center"
                v-if="colData[3].istrue"
                show-overflow-tooltip>
              </el-table-column>
              <el-table-column label="操作" align="center"
                v-if="colData[4].istrue">
                <template slot-scope="scope">
                  <el-button
                    size="mini"
                    icon="el-icon-edit"
                    class="mini_edit"
                    @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
                  <el-button
                    size="mini"
                    icon="el-icon-close"
                    class="mini_close"
                    type="danger"
                    @click="handleDelete(scope.$index, scope.row)">删除</el-button>
                </template>
              </el-table-column>
            </el-table>

    4.此时,需要监听选择的数据,然后动态在表格中显示隐藏

        //监听下拉框中选择值的变化
        watch: {
          colOptions(newVal, oldVal) {
            if (newVal) {    //如果有值发生变化,即多选框的已选项变化
              var arr = this.colSelect.filter(i => newVal.indexOf(i) < 0)     // 未选中
              this.colData.filter(i => {
                if (arr.indexOf(i.title) !== -1) {
                  i.istrue = false
                } else {
                  i.istrue = true
                }
              })
            }
          }
        }, 

    到这,基本上就大功告成了。

    注意:

    1.添加了三组数据:下拉框中显示的全部列;选择的列;包含对应title和Boolean的数组。

    2.点击按钮时,下拉框显示,这时会把内容给撑大,可以给下拉框设置定位,只是设置v-show来控制显示隐藏还不行,因为这样只是display:none还是会占据文档中的位置,只有设置了定位才会脱离文档流,再设置z-index就可以覆盖显示。

  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解
    转 linux socket的select函数例子
    转 结构体中字节对齐问题(转载)
    C语言中volatile关键字的作用
    转 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
    转 常见hash算法的原理
    转 从头到尾彻底解析Hash表算法
    [CEOI2020 D2T1 / CF1403A] 权力药水The Potion of Great Power 题解
    [CEOI2020 D1T3 / CF1402C] 星际迷航Star Trek 题解
    [CEOI2020 D1T2 / CF1402B] 道路Roads 题解
  • 原文地址:https://www.cnblogs.com/5201314m/p/11559097.html
Copyright © 2011-2022 走看看