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>
热门推荐
科学合理选用与搭配护肤品和化妆品的全面指南
丰田荣放底盘高度是多少?
乌兰海碧玉选购指南:如何挑选优质乌兰海碧玉
博士洗衣机显示故障码E26,这意味着什么?
起诉公司诈骗需要什么证据
车辆管理数据采集方法与准确性分析
创业课程中的法定公司名称:命名与合规指南
高俅:十恶不赦还是重情重义的老好人?
奇闻秘史︱中国第一台国产电视机14吋“北京牌”天津制,半个月仅造了15部
怎么运动瘦肚子效果比较好
为什么L4自动驾驶那么难实现?
中国六大茶系:分类及特色,看完就懂了(喝茶入门)
普洱茶知识
如何通过K线图分析买入和卖出股票?
DCS日常维护与故障分析排查方法
理解力矩与力的关系:1牛米等于多少公斤拉力?
荠菜炒鸡蛋这样做最好吃!简单7步教你做出鲜美可口的春季美食
软件开发者如何获利:十种实用盈利模式详解
牙齿矫正通常需要多长时间取决于选用的矫正器类型及患者的年龄
牙齿矫正的时长:多久能看到效果?
蛇宝宝好吗?属蛇的宝宝好不好?生肖蛇的性格特点
探索药食两用的神奇功效与意义:8个你不知道的秘密
自由泳不只要练得多,更要练得巧
如何选购移动固态硬盘:品牌、参数与实用技巧详解
银行开户证明翻译:关键要点与实例解析
偏头痛与头痛的区别
手机怎么查社保缴费记录?四种查询方式全攻略
同比减少怎么算?
一文全面了解防火玻璃相关知识
从零开始:树莓派共享 WiFi 秒变无线热点(树莓派路由器)