• 根据下拉框中选择的列在下面表格中显示对应的列


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

    实现代码:

    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就可以覆盖显示。

  • 相关阅读:
    Java解析XML(一)、SAX
    Java注解
    NTKO OFFICE文档控件为何不能自动装载?
    Java解析XML(二)、DOM
    JAVA反射机制
    如何手工卸载和安装NTKO OFFICE文档控件
    使用内省的方式操作JavaBean
    JDK自带的native2ascii转码工具使用详解
    HTTP协议详解
    跳过编译器,获取泛型参数的实际类型
  • 原文地址:https://www.cnblogs.com/5201314m/p/11559097.html
Copyright © 2020-2023  润新知