Element+Vue实现表格全局筛选功能详解
创作时间:
作者:
@小白创作中心
Element+Vue实现表格全局筛选功能详解
引用
CSDN
1.
https://blog.csdn.net/weixin_43671292/article/details/141823818
在使用Element UI和Vue开发项目时,如何实现表格的全局筛选功能是一个常见的需求。本文将详细介绍如何在分页的情况下实现表格的筛选功能,确保筛选效果能够应用于所有页面,而不仅仅是当前页面。
表格部分代码
在表格组件中,需要监听filter-change事件,并在数据渲染时使用filteredData进行分页处理。
<el-table
:data="
filteredData.slice((currentPage - 1) * pageSize, currentPage * pageSize)
"
@filter-change="filterChange"
>
<el-table-column
prop="regionId"
label="宿舍区域"
:filters="regionIdOptions"
column-key="regionId"
>
<template v-slot="{ row }">
{{ row.region }}
</template>
</el-table-column>
<el-table-column
label="房间性别"
:filters="[
{ text: '女', value: 2 },
{ text: '男', value: 1 },
{ text: '夫妻', value: 3 },
]"
prop="workerGender"
column-key="workerGender"
><template v-slot="{ row }">
<el-tag :type="workerGenderType(row.workerGender)">{{
workerGenderShow(row.workerGender)
}}</el-tag>
</template>
</el-table-column>
//其他内容
</el-table>
获取表格数据
通过inquire方法获取表格数据,并将原始数据存储在tableData中,筛选后的数据存储在filteredData中。
inquire() {
getRequest(this.baseUrl, '你的数据接口')
.then((res) => {
if (res.status == 200) {
this.tableData = res.data.objects
this.filteredData = this.tableData //用于筛选的表格数据
}
})
.catch(function (error) {
console.log(error)
})
},
记录筛选参数
定义filterProps对象来记录筛选参数,注意要与表格列的column-key保持一致。
filterProps: {
workerGender: [1, 2, 3],
regionId: [1, 2],
},
筛选处理
在filterChange方法中处理筛选逻辑,根据筛选条件更新filteredData。
filterChange(filterObj) {
//宿舍区域
if (filterObj.regionId) {
if (filterObj.regionId.length > 0) {
this.filterProps.regionId = filterObj.regionId
} else {
this.filterProps.regionId=[1,2]
}
}
//房间性别
if (filterObj.workerGender) {
if (filterObj.workerGender.length > 0) {
this.filterProps.workerGender = filterObj.workerGender
} else {
this.filterProps.workerGender = [1, 2, 3]
}
}
//过滤数据,根据多个筛选条件对数组进行筛选
this.filteredData = this.tableData.filter(
(item) =>
this.filterProps.workerGender.includes(item.workerGender) &&
this.filterProps.regionId.includes(item.regionId)
)
},
分页处理
确保分页组件的总条数根据筛选后的数据长度进行更新。
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-size="pageSize"
layout="total, prev, pager, next, jumper"
:total="filteredData.length"
>
</el-pagination>
热门推荐
宝宝外八字走路应就诊哪个科室 儿童步态异常看骨科
如何纠正走路外八的情况
法律规定社保交多少年?养老保险缴费年限和计算方法详解
秦代简牍新释读:记载失传的墨家机关术基本原理
学拼音,孩子分不清ai与ei,怎么办?
王者荣耀数据迁移至安卓平台的实用诀窍与注意事项
探究沙苑子种植技术及亩产量(提高沙苑子亩产量的方法与技巧)
押一付二是怎么回事?一文读懂租金支付方式
押一付二的房租怎么交
一篇文看懂西文字体分类
科学养狗:如何选择合适的狗窝
保护网络安全:设置路由器密码的步骤
税前扣除标准及允许扣除的费用项目
堰塞湖的成因是什么
仓库动火要牢记,三清三讲三落实
股票如何进行精准自选及怎样提高选股准确性?
不锈钢生锈后的处理方法是什么,不锈钢生锈是什么原因
针灸在临床医学中的应用探讨
橙子是酸性还是碱性?从生化角度解析橙子的酸碱性
英特尔、台积电抢占的硬科技赛道——硅光芯片的优势和工作原理
Docker之自定义镜像上传至阿里云
家庭装修涂料滚涂施工方法及避坑指南
梦游大脑解码:科学家揭开梦游行为之谜!
视频观看体验极致提升:如何选择优质的视频观看平台,享受高清流畅的观看效果
组装电脑配置单:如何选择最佳组合以满足不同需求?
九寨沟两日游详细攻略:景点特色、路线规划与注意事项全解析
伴侣间的吸引力如何提升?
每年用药2次,缩小鼻息肉、改善鼻塞,还有望减少激素用药和手术!
法国公立大学的申请条件是什么
养生智慧·中医预防之道:连接古今 护佑健康