el-table如何实现筛选功能,以及filters,filter_method详解

news/2024/11/8 14:38:12/

在 ElementUI 的 el-table 组件中,提供了一个 el-table-column 组件的 filters 属性,可以用于对表格数据进行筛选操作。通过设置 filters 属性可以在表头中添加筛选菜单,用户可以通过选择菜单中的选项来过滤表格数据。
具体来说,可以按照以下步骤使用 el-table-column 组件实现筛选功能:

在 el-table 组件中指定表格数据。

<el-table :data=“tableData”>
<!-- 表格列定义 -->
</el-table>

在要进行筛选的列上加入 el-table-column 组件,并设置 filters 和 filter-method 属性。

<el-table :data=“tableData”>
<el-table-column prop=“course” label=“课程名称” :filters=“filters” :filter-method=“filterMethod”>
</el-table-column>
<!-- 其他表格列定义 -->
</el-table>

其中,prop 属性表示要显示的表格数据的属性名,label 属性表示要显示的表格列名。此外,filters 属性是一个数组,表示筛选菜单的选项列表。例如:[{ text: ‘计算机科学’, value: ‘cs’ }, { text: ‘电子工程’, value: ‘ee’ }] 表示有两个选项:“计算机科学”和“电子工程”,对应的值分别为“cs”和“ee”。filter-method 属性则是一个函数,用于根据用户选择的筛选条件,过滤表格数据。例如:
data() {
return {
filters: [
{ text: ‘计算机科学’, value: ‘cs’ },
{ text: ‘电子工程’, value: ‘ee’ }
],
tableData: [
{ id: 1, course: ‘计算机科学’, teacher: ‘张三’ },
{ id: 2, course: ‘电子工程’, teacher: ‘李四’ },
{ id: 3, course: ‘计算机科学’, teacher: ‘王五’ },
{ id: 4, course: ‘电子工程’, teacher: ‘赵六’ }
]
}
},
methods: {
filterMethod(value, row) {
return row.course === value;
}
}

在上面的代码中,我们在 data 函数中定义了筛选菜单和表格数据,当用户选择某个筛选菜单项后,filterMethod 函数会根据选项的值对表格数据进行过滤,只保留符合条件的行。

手动触发表格数据的更新。

当用户选择了筛选菜单项时,需要手动触发表格数据的更新,以便表格能够根据筛选条件重新渲染。可以通过以下方式实现更新:
<el-table :data=“filteredTableData”>
<!-- 表格列定义 -->
</el-table>

computed: {
filteredTableData() {
const { filterValue, filterKey } = this;
if (!filterValue) {
// 如果用户没有选择任何筛选条件,直接返回原始表格数据
return this.tableData;
}
// 使用 filter 方法过滤表格数据
return this.tableData.filter((row) => row[filterKey] === filterValue);
}
},
methods: {
// 用户选择筛选条件时触发更新
handleFilter(value, key) {
this.filterValue = value;
this.filterKey = key;
}
}

在上面的代码中,我们通过 computed 计算属性来根据用户选择的筛选条件过滤表格数据。同时,在 handleFilter 方法中,当用户选择筛选条件时,手动更新了 filterValue 和 filterKey 变量。这会触发 computed 计算属性的重新计算,从而实现表格数据的即时更新。
通过以上步骤,就可以在 ElementUI 的 el-table 组件中实现筛选功能。

在 ElementUI 的 el-table 组件中,el-table-column 组件的 filters 属性确实是用于定义筛选菜单的选项列表。该筛选菜单提供了一个下拉菜单,每个选项代表着一个筛选条件。用户可以通过选择菜单中的某个选项,来过滤表格数据。
不过,在 ElementUI 的 el-table 组件中,还有一个 filter-method 属性,可以用于自定义筛选方法。该属性可以绑定一个函数,用于根据用户选择的筛选条件过滤表格数据。该函数接收两个参数,第一个参数表示当前选中的筛选条件的值,第二个参数是当前遍历的行数据。函数应该返回一个布尔值,决定该行数据是否应该保留在表格中。
下面是类似上面的例子,但用了 filter-method 实现筛选的示例代码:
<el-table :data=“tableData”>
<el-table-column prop=“course” label=“课程名称” :filters=“filters” :filter-method=“filterMethod”>
</el-table-column>
<!-- 其他表格列定义 -->
</el-table>

data() {
return {
filters: [
{ text: ‘计算机科学’, value: ‘cs’ },
{ text: ‘电子工程’, value: ‘ee’ }
],
tableData: [
{ id: 1, course: ‘计算机科学’, teacher: ‘张三’ },
{ id: 2, course: ‘电子工程’, teacher: ‘李四’ },
{ id: 3, course: ‘计算机科学’, teacher: ‘王五’ },
{ id: 4, course: ‘电子工程’, teacher: ‘赵六’ }
]
}
},
methods: {
filterMethod(value, row) {
return row.course === value;
}
}

在上面的代码中,我们使用 filter-method 属性将 filterMethod 函数绑定到 el-table-column 组件上。该函数用于对每行数据进行过滤,只保留符号条件的行数据。与 filters 不同的是,filter-method 能够自定义筛选方法,可以更加灵活地实现需求。

在 ElementUI 的 el-table 中,除了使用筛选菜单进行筛选,还可以使用 el-input 组件提供的输入框来进行筛选。这个需要我们自己实现,可以通过监听 el-input 的 input 事件,根据用户输入的值来过滤表格数据。
以下是一个示例代码,使用 el-input 组件绑定 input 事件,调用 filterTableData 方法来实现筛选功能:
<template>
<div>
<el-input placeholder=“请输入课程名称” v-model=“searchValue” @input=“filterTableData”></el-input>
<el-table :data=“tableData”>
<el-table-column prop=“course” label=“课程名称”></el-table-column>
<el-table-column prop=“teacher” label=“教师姓名”></el-table-column>
</el-table>
</div>
</template>

<script>
export default {
data() {
return {
searchValue: ‘’,
tableData: [
{ id: 1, course: ‘计算机科学’, teacher: ‘张三’ },
{ id: 2, course: ‘电子工程’, teacher: ‘李四’ },
{ id: 3, course: ‘计算机科学’, teacher: ‘王五’ },
{ id: 4, course: ‘电子工程’, teacher: ‘赵六’ }
]
}
},
methods: {
filterTableData() {
this.KaTeX parse error: Expected 'EOF', got '&' at position 14: nextTick(() =&̲gt; { t…refs.table.filter(search, ‘course’);
});
}
}
}
</script>

在上述代码中,我们使用 el-input 组件提供的输入框和 v-model 进行双向数据绑定,监听 input 事件调用 filterTableData 方法。
在 filterTableData 方法中,我们使用 $refs 来获取表格组件的引用(引用名为 table),调用其 filter 方法来过滤表格数据。其中,方法的第一个参数 search 表示用户在输入框中输入的值,第二个参数 course 表示要筛选的表格列的属性名。值得注意的是,在调用 filter 方法时,我们使用 $nextTick 来确保在过滤表格数据之前渲染出所有的表格行。


http://www.ppmy.cn/news/77108.html

相关文章

关于C语言的杂记5

文章目录 引入正文内部函数与外部函数相关数组的知识点数组的初始化测试一维数组在内存中存储的地址&#xff1a;遍历二维数组的值测试二维数组的地址(观察内存情况)数组下标为0开始的由来 两个数交换位置的三种方法 引入 写在前面&#xff1a;关于C语言这部分内容&#xff0c;…

[答疑]UML精粹里和你视频里说的不太一样

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>> 第五元素 2023-4-14 20:32 这是是UML精粹里的。潘老师&#xff0c;这个跟你视频里讲的是不是不太一样&#xff1f;还是我理解错了&#xff1f; UMLChina潘加宇 这个&#…

CRM客户管理系统开发 获客管理营销全搞定

企业经营管理是有很大学问的&#xff0c;无论是生产经营、销售、服务还是客户管理、维护、营销都是需要付出一定的人力物力来管理的。传统的企业管理多是通过人工方式来完成&#xff0c;个中细节繁琐复杂&#xff0c;耗时耗力还很容易出现纰漏。所以随着科技的发展&#xff0c;…

QDir拼接路径解决各种斜杠问题

一般在项目中经常需要组合路径,与其他程序进行相互调用传递消息通信。 经常可能因为多加斜杠、少加斜杠等问题导致很多问题。 为了解决这些问题,我们可以使用QDir来完成路径的拼接,不直接拼接字符串。 QDir的静态方法QDir::cleanPath() 是为了规范化路径名的,在使用QDir组…

pthread多线程: 线程泄漏的检测

文章目录 1. 目的2. 什么是线程泄漏3. pthread 线程泄漏例子3.1 代码3.2 编译和运行3.3 简要分析 4. 检测线程泄漏4.1 编译链接时传入参数 -fsanitizethread4.2 确认 TSAN_OPTIONS 环境变量 5. 修复线程泄漏5.1 方法1&#xff1a; 主线程等待子线程5.2 方法2&#xff1a;子线程…

SSRF-服务器端请求伪造

漏洞定义和成因 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能够请求到与它…

6. python的for循环

文章目录 一、for循环1.1、for循环分析1.2、注意事项 二、遍历数值列表2.1、range()函数的使用2.2、 创建数值列表2.3、对数值列表进行简单统计 一、for循环 有时&#xff0c;我们需要对列表内的所有元素逐一进行相同的操作&#xff0c;为避免出现大量重复的代码&#xff0c;p…

day9 - 对花朵图像进行边缘检测

本期主要介绍常用于进行图像边缘检测的滤波器&#xff08;算子&#xff09;&#xff1a;Sobel算子、Scharr算子、Laplacian算子&#xff1b;通过实验比较不同的算子的处理效果以及使用场景。 完成本期内容&#xff0c;你可以&#xff1a; 了解图像梯度的原理和应用 掌握使用S…