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中echarts的用法及与elementui-select的协同绑定操作
Nov 17 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
vue编写简单的购物车功能
Jan 08 Vue.js
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
vue使用过滤器格式化日期
Jan 20 Vue.js
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue项目打包后路由错误的解决方法
Apr 13 Vue.js
vue修饰符.capture和.self的区别
Apr 22 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语法速查表
2007/01/02 PHP
ajax php 实现写入数据库
2009/09/02 PHP
使用PHP实现密保卡功能实现代码&amp;lt;打包下载直接运行&amp;gt;
2011/10/09 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
JS 继承实例分析
2008/11/04 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
如何解决vue在ios微信&quot;复制链接&quot;功能问题
2020/03/26 Javascript
[04:19]完美世界携手游戏风云打造 卡尔工作室模型介绍篇
2013/04/24 DOTA
python通过imaplib模块读取gmail里邮件的方法
2015/05/08 Python
Python实现多线程的两种方式分析
2018/08/29 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
Python面向对象编程基础实例分析
2020/01/17 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
python speech模块的使用方法
2020/09/09 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
房屋改造计划书
2014/01/10 职场文书
个人培训自我鉴定
2014/03/28 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
北京申奥口号
2014/06/19 职场文书
劳动保障个人工作总结
2015/03/04 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL
win server2012 r2服务器共享文件夹如何设置
2022/06/21 Servers