vue3 antd项目实战——table表格的自定义筛选【纯前端filters过滤、自定义筛选table表格数据】

news2025/2/24 5:15:35

vue3 antd项目实战——table表格自定义筛选(使用filters属性实现表头列columns自定义筛选)

  • 往期知识调用(步骤不懂就看这儿)
  • 场景复现
  • 实战演示
    • 实例1——筛选发布状态🔥
      • 1、双向绑定表格列目录、表格数据
      • 2、编写列目录内容及参数类型
      • 3、在columns中添加自定义筛选功能🔥
    • 实例2——筛选通知状态
    • 实例3——筛选部门
      • 1、列目录columns数据、参数类型columnType
      • 2、在columns中添加filters和onFilter实现自定义筛选

往期知识调用(步骤不懂就看这儿)

文章内容文章链接
vue3 antd table表格的基础搭建https://blog.csdn.net/XSL_HR/article/details/128072745
ant design vue组件库的引入与使用https://blog.csdn.net/XSL_HR/article/details/127396384

场景复现

后台管理系统中,我们需要对大量的数据进行展示、处理和操作,table表格也因此无处不在。而ant design vue组件库中的table表格,给出了诸多属性来方便数据管理。本期文章向大家介绍的是filters属性——在表头添加自定义筛选功能,实现对表格列数据自定义筛选

需求:表格数据能够在表头进行自定义筛选操作
方法:借助ant design vue组件库的filters属性

最终效果:(部分页面)
请添加图片描述


实战演示

下面将用三个具体的项目例子来具体介绍,如何实现table表格的自定义筛选

项目的UI框架依旧采用ant design vue组件库(移步官方文档查看详情)

实例1——筛选发布状态🔥

页面的实现这里就不过多阐述了,直接进入正题,怎么实现自定义筛选

1、双向绑定表格列目录、表格数据

<a-table 
   :columns="columns" 
   :dataSource="tableData"
    style="margin-top:5px" 
    >
    <!--表格内的插槽及数据渲染-->
</a-table>

2、编写列目录内容及参数类型

(1)目录内容:

const columns = ref<columnsType[]>([
    {
        title: "新建人",
        dataIndex: "create_user",
        key: "create_user",
        width: 120,
        align: "center",
    },
    {
        title: "新建日期",
        dataIndex: "create_date",
        key: "create_date",
        width: 120,
        align: "center",
        customRender:function({text} : any) {
            return dayjs(text).format("YYYY-MM-DD");
        },
    },
    {
        title: "发布状态",
        dataIndex: "enable",
        key: "enable",
        width: 100,
        align: "center",      
    },
    {
        title: "邮箱状态",
        dataIndex: "email",
        key: "email",
        width: 100,
        align: "center",
    },
    {
        title: "操作",
        dataIndex: "operation",
        key: "operation",
        width: 200,
        align: "center",
    },
]) 

(2)参数类型(里面的每个参数分别对应什么,已注释表明)

export interface columnsType {
    title: string; // 标题
    dataIndex: string; // 数据
    key: string; // 键值
    width: number; // 宽度
    align: string; // 位置
    customRender?: any; // 插槽
    sorter?: any; // 排序
    sortDirections?: any; // 排序方式 
    fixed?: string; // 固定列
    filters?: any; // 筛选
    onFilter?: any; // 本地筛选
}

官方文档中的详细说明
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、在columns中添加自定义筛选功能🔥

        filters: [
            { 
                text: '已发布', 
                value: 1 
            },
            { 
                text: '未发布',
                value: 0 
            },
        ],
        onFilter: (value: number | string | boolean, record: tableDataType) =>
            record.state === value,     

在这里插入图片描述

解释说明

  • filters中存放的是一个数组,数组的元素个数即为筛选项的个数,每一个元素对应两个参数,分别是textvaluetext对应页面展示出来的筛选项文本value则与数据的属性值一一对应
  • (当然在我的表格数据中,代表发布状态的属性值state为1即已发布,为0则未发布
  • onFilterfilters可谓成对出现,有filters的地方,onFilter也一定存在。(前提为本地筛选
  • onFilter对应的是一个函数,函数有两个变量valuerecord,分别对应筛选项对应的值表单中该列数据所对应的值,当这两个值相等时,则表示筛选成功,并将筛选后的数据展示在页面中。

最终实现效果(部分页面)请添加图片描述
其实并不难,看官方文档的教程不如来看看实战操作,立马学会。下面我们来复用一下上面的方法,再实现几个自定义筛选。

自己写数据的时候,如果有报错,要么是数据类型出了问题,要么是少了数据,要么是少了逗号等标识符

实例2——筛选通知状态

我们接着上面的框架,对邮箱通知状态进行自定义筛选。

        filters: [
            { 
                text: '已通知', 
                value: 1 
            },
            { 
                text: '未通知',
                value: 0 
            },
        ],
        onFilter: (value: number | string | boolean, record: tableDataType) =>
            record.email === value,

在这里插入图片描述
最终实现效果请添加图片描述
和实例一类似,除了参数和数据以外,逻辑上几乎没有区别,如果还有点模糊的话,来看看第三个实例吧。

实例3——筛选部门

1、列目录columns数据、参数类型columnType

interface columnType {
    title: string;
    dataIndex: string;
    key: string;
    width: number;
    align: string;
    customRender?: any;
    filters?: any;
    onFilter?: any;
    children?: any; // 子表格
    tags?: any; // 标签
    fixed?: any
}
const columns = ref<columnType[]>([
    {
        title: "部门",
        dataIndex: "files_department",
        key: "files_department",
        width: 195,
        align: "center",
    {
        title: "入职档案",
        dataIndex: "files_onboard",
        key: "files_onboard",
        width: 270,
        align: "left",
    },
]) 

2、在columns中添加filters和onFilter实现自定义筛选

          filters: [
            { 
                text: '技术研发与测试部', 
                value: '技术研发与测试部' 
            },
            { 
                text: '产品与UED部',
                value: '产品与UED部' 
            },
            { 
                text: '综合管理部',
                value: '综合管理部' 
            },
            { 
                text: '学科教研部部',
                value: '学科教研部' 
            },
            { 
                text: '校园媒体部',
                value: '校园媒体部' 
            },
        ],
        onFilter: (value: string, record: tableDataType) =>
            record.files_department === value,

最终实现效果
请添加图片描述


想必看到这里的你,一定学会了如何自定义筛选表格数据了吧! 若有疑问,欢迎评论区留言或私信~


后期文章将进一步介绍table表格的一些骚操作,比如各种规则排序
感兴趣的小伙伴可以订阅本专栏,方便后续了解学习~
觉得这篇文章有用的小伙伴们可以点赞➕收藏➕关注哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/405841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue控制滚动条滑到某个位置

一.关于web开发的各种高度的计算介绍 设置当前滑动到的距离 语法一&#xff1a;window.scrollTop(x,y) 传俩个值 //x横坐标 y纵坐标 例&#xff1a;window.scrollTop(0&#xff0c;1000) 语法二&#xff1a;window.scrollTop(options) 传对象&#xff0c;对象里面放属性 w…

js遍历map(js遍历map对象)

javascript怎么遍历map var map new HashMap();map.put(a,1);map.put(b,2);遍历&#xff1a;var key map.keySet();for (var i in key){ alert(map.get(key[i]));&#xff5d;注&#xff1a;js 中使用map&#xff0c;要先导入一个HashMap.js文件 没要求&#xff0c;引入这个文…

【深入浅出imx8企业级开发实战 | 04】嵌入式Linux设备掉电数据容错研究

这是机器未来的第58篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126924015 《深入浅出i.MX8企业级开发实战》快速导航 【01】imx8qxp yocto工程构建指南 【02】Yocto工程repo源码gitee加速配置方法 【03】imx8qxp一键独立编译指南 【04】嵌入式…

三分钟创建一个新应用,ivx的神奇之处【PPT式程序开发】

像做PPT一样的可视化编程语言你想拥有吗&#xff0c;可以自己尝试一下。像PPT一样的编程语言 文章目录&#x1f353;&#x1f353;用ivx创建一个新的应用&#xff08;零基础&#xff09;&#x1f680;&#x1f680;&#x1f96d;&#x1f96d;点击链接&#xff0c;跳转到官网&a…

【Vue 路由(vue—router)二】路由传参(params的类型 、Query参数的类型、路由name)

目录 前言 一、路由传参 效果展示 1.params的类型 &#xff08;后附源码&#xff09; params的类型源码不要在意注释代码 2.​​​​​​query参数的类型&#xff08;后附源码&#xff09; query参数的类型源码同样无视注释代码 3.路由name 前言 此内容为连载&#xff0c…

一文搞懂JS-Web-API——DOM

&#x1f308;本系列文章是博主精心整理的面试热点问题&#xff0c;吸收了大量的技术博客与面试文章&#xff0c;总结多年的面试经历&#xff0c;带你快速建立前端面试知识体系。抓住每一场面试的机会&#xff0c;知己知彼才能百战百胜。直击技术痛点&#xff0c;主动出击&…

Pinia 数据持久化储存(pinia-plugin-persistedstate)

pinia需要使用pinia-plugin-persistedstate插件来进行数据的存储 插件官网地址&#xff1a; https://prazdevs.github.io/pinia-plugin-persistedstate/guide/config.html 1、安装 这里对插件的安装就不多赘述了&#xff0c;放两张官网的截图 使用命令&#xff1a;npm i pi…

Vue--》计算属性与监视(侦听)属性的使用

目录 计算属性(computed) 监视属性(watch) 监视的两种方法 immediate选项 深度监视 计算属性(computed) 计算属性指的是通过一系列运算之后&#xff0c;最终得到一个值。这个动态计算出来的属性值可以被模板结构或methods方法使用&#xff0c;案例如下&#xff1a; <…

前端实战|React18极客园——登陆模块(token持久化、路由拦截、mobx、封装axios)

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React框架React框架React框架&#x1f525…

vite搭建vue2项目

问题提出 最近在做一个练习的小项目&#xff0c;由于要配合组成员的其它成员来搭建项目&#xff0c;大多掌握的技术栈都在vue2&#xff0c;用惯了vite来搭建&#xff08;vite真香~&#xff09;,就想着来搭建一个vue2的项目。原本以为查下百度很快可以搭好&#xff0c;没想到折…

【小程序从0到1】WXSS模版语法汇总

欢迎来到我的博客 &#x1f4d4;博主是一名大学在读本科生&#xff0c;主要学习方向是前端。 &#x1f36d;目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 &#x1f6e0;目前正在学习的是&#x1f525;React/小程序React/小程序React/小程序&am…

微前端vue项目实战 -- 乾坤qiankun框架 (一)

背景&#xff1a; 公司研发的项目主要是 GIS地图为基础的管理系统&#xff0c;由主体项目&#xff08;管理业务模块&#xff09; GIS地图应用&#xff0c;由于 GIS地图应用模块 会在多个地方使用&#xff0c;所以单独构建一个项目&#xff0c;分别在不同的业务场景中引用、交互…

JavaScript鼠标移动事件及案例

一、鼠标点击事件 1.onclick单击事件 鼠标单击时事件处理函数 <input type"button" id"bt" value"点击"> <script> //找到按钮并设置点击事件 document.getElementById("bt").onclick function (){ //被点击…

kkFileView部署及使用

Windows:kkFileView部署及使用前言部署Web引用普通webVue &#xff1a;需要引入base64.js前言 kkFileView支持主流文档的在线预览服务。官网地址 部署 kkFileView不需要集成&#xff0c;只需要部署到服务器即可。 从 Gitee 上下载最新的压缩包&#xff0c;或者从代码仓库中下…

【Vue+element-ui搭建前端页面】适用于初学者学习

作者有话说&#xff1a; 学习编程我们必不可少的就是做项目&#xff0c;在学习后端的同时&#xff0c;前端知识也是要学习滴&#xff0c;这篇文章将展示如何利用Vue和element-ui搭建前端界面。话不多说&#xff0c;进入主题&#xff01;&#xff01;&#xff01; 目录 首先是…

网页报错“Form elements must have labels”的处理

网页报错“Form elements must have labels”的处理 先给出错误现象源码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"utf-8" /><meta name"viewport" content"widthdevice-width&quo…

uniapp中单选按钮的实现

标签说明&#xff1a; radio-group&#xff1a;单项选择器&#xff0c;内部由多个 <radio> 组成。通过把多个radio包裹在一个radio-group下&#xff0c;实现这些radio的单选。 radio&#xff1a;单选项目 属性说明&#xff1a; change&#xff1a;<radio-group>…

Vue中使用element-ui 给按钮绑定一个单击事件,实现点击按钮就弹出一个dialog对话框

1.需求描述 想要实现点击一个按钮就弹出一个对话框&#xff0c;在对话框中可输入数据进行提交&#xff0c;在点击取消时对话框关闭 2.功能实现 1.创建按钮 在element中把找到按钮的代码放到div里 <el-row><el-button type"primary" plain>新增</el…

Java支付宝沙箱环境支付,SDK接口远程调试【内网穿透】

文章目录1.测试环境2.本地配置3. 内网穿透3.1 下载安装cpolar内网穿透3.2 创建隧道4. 测试公网访问5. 配置固定二级子域名5.1 保留一个二级子域名5.2 配置二级子域名6. 使用固定二级子域名进行访问1.测试环境 MavenSpring bootJdk 1.8 2.本地配置 获取支付宝支付Java SDK,ma…

Vue--》过滤器介绍及其使用方法

目录 过滤器 过滤器的兼容性 私有过滤器和全局过滤器 过滤器的连续调用 过滤器进行传参 过滤器 过滤器的兼容性 注意&#xff1a;Vue3中明确取消了过滤器这个功能&#xff0c;如果想使用只能在Vue2中进行&#xff0c;如果所做的项目是Vue2的话&#xff0c;可以了解一下这…