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 08 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
浅谈Vue开发人员的7个最好的VSCode扩展
Jan 20 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
vue-router懒加载的3种方式汇总
Feb 28 Vue.js
详解vue3中组件的非兼容变更
Mar 03 Vue.js
vue ref如何获取子组件属性值
Mar 31 Vue.js
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
vue使用localStorage持久性存储实现评论列表
Apr 14 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批量生成随机用户名
2008/07/10 PHP
php XPath对XML文件查找及修改实现代码
2011/07/27 PHP
怎么在Windows系统中搭建php环境
2013/08/31 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
PHP CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
InnerHtml和InnerText的区别分析
2009/03/13 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
python实现视频读取和转化图片
2019/12/10 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
白酒业务员岗位职责
2013/12/27 职场文书
自我评价的范文
2014/02/02 职场文书
中学生获奖感言
2014/02/04 职场文书
汇源肾宝广告词
2014/03/20 职场文书
优秀毕业生就业推荐信
2014/05/22 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
争先创优心得体会
2014/09/12 职场文书
公司奖励通知
2015/04/21 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
股权投资协议书
2016/03/23 职场文书