前言

在日常办公中,我们经常需要操作各种表格。然而,当表格数据过多时,表头往往会挤占宝贵的屏幕空间,给我们的工作带来不便。那么,如何实现动态控制表头的显隐呢?本文将为大家详细介绍。


如何实现?

本章节用的组件

  • Popover 弹出框
  • Checkbox 多选框
  • Button 按钮
  • Table 表格

实现思路

  1. 首先,我们需要用到多选框组去绑定表头的值,通过 reference 触发 Popover 显示的 HTML 元素;
  2. 其次,通过 v-if="数组[下标].状态" 给表格的每一列绑定上动态的状态,以此判断表格的每一列是否显隐;
  3. 最后,当我们勾选或者取消勾选选框时,通过 filter 方法对数组进行过滤,再利用 indexOf 方法的特性让其每一列的状态更新(true 或者 false)即可。

话不多说,下面直接看实例代码


完整源码

<template><div class="containerBox"><!-- Popover 弹出框 --><div class="tabControlBox"><el-popover placement="right" trigger="click"><el-checkbox-group v-model="colOptions"><el-checkbox v-for="item in colSelect" :label="item" :key="item" @change="columnChange"></el-checkbox></el-checkbox-group><!-- reference   触发 Popover 显示的 HTML 元素 --><el-button icon="el-icon-menu" type="info" size="mini" slot="reference">显示列</el-button></el-popover></div><!-- Table 表格 --><div class="tableBox"><el-table :data="tableData" border><el-table-column label="姓名" v-if="colData[0].ishide" prop="name"></el-table-column><el-table-column label="性别" v-if="colData[1].ishide" prop="sex"></el-table-column><el-table-column label="年龄" v-if="colData[2].ishide" prop="age"></el-table-column><el-table-column label="电话" v-if="colData[3].ishide" prop="phone"></el-table-column><el-table-column label="邮箱" v-if="colData[4].ishide" prop="email"></el-table-column><el-table-column label="学历" v-if="colData[5].ishide" prop="education"></el-table-column><el-table-column label="职业" v-if="colData[6].ishide" prop="occupation"></el-table-column><el-table-column label="地址" v-if="colData[7].ishide" prop="site"></el-table-column></el-table></div></div>
</template><script>
export default {data() {return {// 模拟表格数据tableData: [{name: "小红",sex: "女",age: "20",phone: "177****8810",email: "2901626033@qq.com",education: "本科",occupation: "前端开发",site: "北京昌平",},],//动态显示列colData: [{ title: "姓名", ishide: true },{ title: "性别", ishide: true },{ title: "年龄", ishide: true },{ title: "电话", ishide: true },{ title: "邮箱", ishide: false },{ title: "学历", ishide: true },{ title: "职业", ishide: false },{ title: "地址", ishide: true },],// 多选框绑定值colOptions: ["姓名", "性别", "年龄", "电话", "学历", "地址"],// 多选框展示的值colSelect: ["姓名","性别","年龄","电话","邮箱","学历","职业","地址"],};},methods: {//动态显示列columnChange() {this.colData.filter((i) => {if (this.colOptions.indexOf(i.title) !== -1) {i.ishide = true;} else {i.ishide = false;}});},},
};
</script><style scoped>
.containerBox {padding: 20px;
}
.tabControlBox {margin-bottom: 10px;
}
</style>

实现效果


拓展

filter() 方法通过检查指定数组中符合条件的所有元素,filter()方法不会改变原始数组。

参数 描述
参数1 必须。当前元素的值。
参数2 可选。当前元素的索引值。
参数3 可选。当前元素属于的数组对象。

简单实例

let array = [{ id: 1, name: "小红" },{ id: 2, name: "小黄" },{ id: 3, name: "小兰" },{ id: 4, name: "小绿" },];
let fil = array.filter((item) => item.id != 1); // 查找数组中id不等于1的对象
console.log(fil); // [{id: 2, name: '小黄'},{id: 3, name: '小兰'},{id: 4, name: '小绿'}]

indexOf() 方法可以返回某个指定的字符串值在字符串中首次出现的位置,如果没有找到匹配的字符串则返回 -1。

参数 描述
参数1 必须。要查找的字符串的值(e)。
参数2 可选。整数。在字符串的第几个位置(5)开始查找字符(e)第一次出现的位置,如省略该参数,则将从字符串的首字符开始检索。

简单实例

var str = 'Hello world, welcome to the universe';
var det = str.indexOf('e', 5); // 在字符串第五个位置开始查找字符'e'第一次出现的位置
console.log(det); // 14

动态控制表格表头显隐,让表格变得更加智能相关推荐

  1. php 点击表头排序,TP5+ajax实现点击表格表头切换排序,带分页

    TP5+ajax实现点击表格表头切换排序,带分页 2018-08-15 14:59:06ThinkPHP php接收页码请求的地址 /** * ajax 无刷新分页 * param $page int ...

  2. qt 表格表头嵌入全选全不选_6个word表格基础操作,看了再说会不会

    点击上面△蓝字 ,关注职领 Office 记得坚持打卡哦~ 本期小编要给大家分享一些word表格的基本技巧,希望对各位有帮助,话不多说,上菜! 01 快速对单元格进行合并与拆分 在Excel中,单元格 ...

  3. easyui datagrid 多表头数据错位_表格数据检索(二)

    企业级中后台产品通常大量使用表格来展示结构化的数据,对表格数据进行检索,是一个常用功能.在日常设计工作中,我们经常不加思考便产出一个个带有表格数据检索功能的页面.然而,体验良好的表格数据检索功能,需要 ...

  4. html.编辑数据回显,从HTML表格编辑/更新MySQL数据库值

    我有一个表单,目前提交值到MySQL数据库.在每次提交完成后,刚刚插入到mysql数据库的数据将在表单下回显.该表格具有动态输入字段.我知道想要添加编辑以前插入的值的可能性.我放置了一个编辑按钮,将用 ...

  5. css固定表格表头(各浏览器通用)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. element更改表格表头、行、指定单元格样式

    element更改表格表头.行.指定单元格样式 更改表格的样式 使用header-cell-style属性,可为函数或对象 函数写法 <!-- html --> <el-table ...

  7. html css 表头,css固定表格表头(各浏览器通用)

    固定表格表头 div{ overflow-y: scroll; overflow-x: hidden; height: 100px; margin-top: 5px; margin-left: 12p ...

  8. elementUI table 表格表头居中 颜色、内容居左

    设置表格表头居中 颜色 : header-cell-style="{'text-align':'center',color: '#000',}" 设置表格内容 : align=&q ...

  9. php表格列宽拖拽,JavaScript_JQuery拖动表头边框线调整表格列宽效果代码,类似于桌面程序中的表格拖动 - phpStudy...

    JQuery拖动表头边框线调整表格列宽效果代码 类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放 ...

最新文章

  1. 【OSX】build AOSP 2.3.7时的build error解决
  2. 卷积神经网络中用1*1 卷积有什么作用或者好处呢?
  3. 【教程】1、加载静态内容
  4. 三级网络技术_计算机三级网络技术(1):网络系统结构与设计的基本原则
  5. 用puthivestreaming把hdfs里的数据流到hive表
  6. python2 与 python3的区别整理
  7. [译]ASP.NET Core 2.0 网址重定向
  8. 基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程
  9. 51CTO,什么情况?
  10. 从零开始学产品第六篇:更强大的测试,自动化测试和性能测试
  11. phpstudy(自己电脑主机做服务器,手机网站界面打不开)
  12. 开发规范 - UML图
  13. 20172310 《程序设计与数据结构》实验二报告
  14. 基于Springboot的医院药品管理系统的设计与实现.zip(论文+项目源码)
  15. GMSSL双证书认证C/S(Linux版)
  16. nagios监控系统
  17. 简述python文件操作的流程_Python文件操作详解
  18. CaEGCN: Cross-Attention Fusion based Enhanced Graph Convolutional Network for Clustering 2021
  19. 台湾品牌获得东京威士忌烈酒竞赛2020最佳单一麦芽威士忌总冠军
  20. Fastjson反序列化讲解

热门文章

  1. YOLOv8首发原创改进:即插即用|新颖轻量化非对称多级压缩LADH检测头,原创改进适配YOLOv8高效检测头,检测头新颖性改进,YOLO检测器性能高效涨点
  2. 索尼A7 IV 评测
  3. OpenCVSharp 笑脸检测
  4. 计算机专业,买什么配置的电脑比较合适?
  5. ERP选型需要关注的3个点
  6. SAP License:ERP选型与实施的注意要点
  7. class mate
  8. UDP传输报文大小详解
  9. 揭开芯面纱 主流平板电脑方案深度剖析之ARMv5,v6,v7架构阵营
  10. android activity的跳转,Android Activity跳转方式总结分享