vue+element table表格实现动态列筛选的示例代码


Posted in Vue.js onJanuary 14, 2021

需求:在用列表展示数据时,出现了很多项信息需要展示导致表格横向特别长,展示就不够明晰,用户使用起来可能会觉得抓不住自己的重点。

设想实现:用户手动选择表格的列隐藏还是展示,并且记录用户选择的状态,在下次进入该时仍保留选择的状态。

效果图如下:

原:

vue+element table表格实现动态列筛选的示例代码

不需要的关掉默认的勾选:

vue+element table表格实现动态列筛选的示例代码

实现代码:
HTML部分就是用一个多选框组件展示列选项
v-if="colData[i].istrue"控制显示隐藏,把列选项传到checkbox里再绑定勾选事件。

<el-popover placement="right" title="列筛选" trigger="click" width="420">            
	<el-checkbox-group v-model="checkedColumns" size="mini">
		<el-checkbox v-for="item in checkBoxGroup" :key="item" :label="item" :value="item"></el-checkbox>
	</el-checkbox-group>
	<el-button slot="reference" type="primary" size="small" plain><i class="el-icon-arrow-down el-icon-menu" />列表项展示筛选</el-button>
</el-popover>
<el-table :data="attendanceList" @sort-change="sort" highlight-current-row :row-class-name="holidayRow" @selection-change="editAll" ref="multipleTable">
	<el-table-column type="selection" width="55" align="center"></el-table-column>
		<el-table-column label="员工基本信息">
		<el-table-column v-if="colData[0].istrue" align="center" prop="user_id" label="工号" width="80" fixed></el-table-column>
		<el-table-column v-if="colData[1].istrue" align="center" prop="name" label="姓名" width="80" fixed></el-table-column>
		<el-table-column v-if="colData[2].istrue" align="center" prop="age" label="年龄" width="60"></el-table-column>
		<el-table-column v-if="colData[3].istrue" align="center" prop="gender" label="性别" width="80"></el-table-column>
		<el-table-column v-if="colData[4].istrue" align="center" prop="department" label="部门名称" width="100"></el-table-column>
	</el-table-column>
	......

js 数据存放的data部分

//列表动态隐藏
	 colData: [
	   { title: "工号", istrue: true },
	   { title: "姓名", istrue: true },
	   { title: "年龄", istrue: true },
	   { title: "性别", istrue: true },
	   { title: "部门名称", istrue: true },	   
	 ],
	 checkBoxGroup: [],
	 checkedColumns: [],

js 方法实现部分

created() {      
	  // 列筛选
	  this.colData.forEach((item, index) => {
	    this.checkBoxGroup.push(item.title);
	    this.checkedColumns.push(item.title);
	  })
	  this.checkedColumns = this.checkedColumns
	  let UnData = localStorage.getItem(this.colTable)
	  UnData = JSON.parse(UnData)
	  if (UnData != null) {
	    this.checkedColumns = this.checkedColumns.filter((item) => {
	      return !UnData.includes(item)
	    })
	  }
	},
 // 监控列隐藏
 watch: {
   checkedColumns(val,value) {
     let arr = this.checkBoxGroup.filter(i => !val.includes(i)); // 未选中
     localStorage.setItem(this.colTable, JSON.stringify(arr))
     this.colData.filter(i => {
       if (arr.indexOf(i.title) != -1) {
         i.istrue = false;
       } else {
         i.istrue = true;
       }
     });
   }
 },

这样就可以实现了,并且在刷新页面等会记录勾选情况,本来想加一个全选的选择框,最后没实现,先这样用吧。但是肯定有更好的方法,以后优化了再更新~

到此这篇关于vue+element table表格实现动态列筛选的示例代码的文章就介绍到这了,更多相关element table表格动态列筛选内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue实现图片裁剪后上传
Dec 16 Vue.js
vue el-upload上传文件的示例代码
Dec 21 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
vue实现轮播图帧率播放
Jan 26 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 Vue.js
vue 递归组件的简单使用示例
Jan 14 #Vue.js
vue element和nuxt的使用技巧分享
Jan 14 #Vue.js
vue动态设置路由权限的主要思路
Jan 13 #Vue.js
vue组件是如何解析及渲染的?
Jan 13 #Vue.js
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 #Vue.js
vue使用vue-quill-editor富文本编辑器且将图片上传到服务器的功能
Jan 13 #Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 #Vue.js
You might like
并发下常见的加锁及锁的PHP具体实现代码
2010/10/12 PHP
PHP输出数组中重名的元素的几种处理方法
2012/09/05 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
浅谈thinkphp的实例化模型
2015/01/04 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
单独使用CKFinder选择图片的方法
2010/08/21 Javascript
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
jQuery中delegate与on的用法与区别示例介绍
2013/12/20 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
js仿微博实现统计字符和本地存储功能
2015/12/22 Javascript
javascript和jQuery实现网页实时聊天的ajax长轮询
2016/07/20 Javascript
AngularJS入门教程之表单校验用法示例
2016/11/02 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
JavaScript+Canvas实现彩色图片转换成黑白图片的方法分析
2018/07/31 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
通过实例解析json与jsonp原理及使用方法
2020/09/27 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
mac系统安装Python3初体验
2018/01/02 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
物业管理计划书
2014/01/10 职场文书
公司财务会计主管应聘求职信
2014/09/26 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
2022/06/10 Servers
服务器SVN搭建图文安装过程
2022/06/21 Servers