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+vant实现购物车全选和反选功能
Nov 17 Vue.js
vue + el-form 实现的多层循环表单验证
Nov 25 Vue.js
vue添加自定义右键菜单的完整实例
Dec 08 Vue.js
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
vue 在单页面应用里使用二级套嵌路由
Dec 19 Vue.js
vue实现防抖的实例代码
Jan 11 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
vue前端工程的搭建
Mar 31 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
vue+springboot实现登录验证码
May 27 Vue.js
vue3使用vue-router的完整步骤记录
Jun 20 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函数解决SQL injection
2006/12/09 PHP
PHP 模拟登陆MSN并获得用户信息
2009/05/16 PHP
PHP 事件机制(2)
2011/03/23 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
php批量删除操作代码分享
2017/02/26 PHP
PHP多进程编程实例详解
2017/07/19 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
php中的依赖注入实例详解
2019/08/14 PHP
javascript web页面刷新的方法收集
2009/07/02 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
2013/07/17 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
Vue中fragment.js使用方法详解
2017/03/09 Javascript
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
vue实现验证用户名是否可用
2021/01/20 Vue.js
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python实现的金山快盘的签到程序
2013/01/17 Python
Python实现的栈(Stack)
2018/01/26 Python
详解Python 解压缩文件
2019/04/09 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
使用django和vue进行数据交互的方法步骤
2019/11/11 Python
Python如何使用BeautifulSoup爬取网页信息
2019/11/26 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
使用SQLAlchemy操作数据库表过程解析
2020/06/10 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
2020/07/13 Python
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
人事任命通知
2015/04/20 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android