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——解决报错 Computed property &quot;****&quot; was assigned to but it has no setter.
Dec 19 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
vue 页面跳转的实现方式
Jan 12 Vue.js
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
vue路由实现登录拦截
Mar 24 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
vue引入Excel表格插件的方法
Apr 28 Vue.js
vue实现水波涟漪效果的点击反馈指令
May 31 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
VUE递归树形实现多级列表
Jul 15 Vue.js
Vue深入理解插槽slot的使用
Aug 05 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 获取本机外网/公网IP的代码
2010/05/09 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
php连接与操作PostgreSQL数据库的方法
2014/12/25 PHP
Symfony模板的快捷变量用法实例
2016/03/17 PHP
php 处理png图片白色背景色改为透明色的实例代码
2018/12/10 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
一个挺有意思的Javascript小问题说明
2011/09/26 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
Vue form 表单提交+ajax异步请求+分页效果
2017/04/22 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
vue 简单自动补全的输入框的示例
2018/03/12 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
JavaScript两种计时器的实例讲解
2019/01/31 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
2019/11/25 Javascript
Element Badge标记的使用方法
2020/07/27 Javascript
微信小程序实现列表左右滑动
2020/11/19 Javascript
[55:25]VGJ.T vs Optic Supermajor小组赛D组 BO3 第三场 6.3
2018/06/04 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
python中reader的next用法
2018/07/24 Python
python Pexpect 实现输密码 scp 拷贝的方法
2019/01/03 Python
pandas数据筛选和csv操作的实现方法
2019/07/02 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
html5 canvas绘制放射性渐变色效果
2018/01/04 HTML / CSS
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
仓库门卫岗位职责
2013/12/22 职场文书
我的长生果教学反思
2014/04/28 职场文书
2014年十一国庆节活动方案
2014/09/16 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
遗嘱范文
2015/08/07 职场文书