You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Material Table自定义列搜索过滤:实现状态文本筛选

解决Material Table状态列的自定义搜索筛选问题

要实现用户输入"Active"或"Inactive"就能筛选对应状态的行,只需在customFilterAndSearch属性中编写逻辑,将用户输入的文本映射为对应的数值(1/0),再与行数据的Active字段对比即可,同时兼容用户直接输入1/0的场景:

修改后的列配置代码

{
    title: <Typography className={classes.colHeader}>Active</Typography>,
    field: "Active",
    render: (rowData) => generateFlagText(rowData.Active),
    customFilterAndSearch: (term, rowData) => {
        // 统一转小写,支持不区分大小写搜索
        const lowerTerm = term.toLowerCase().trim();
        // 映射用户输入到对应的状态值
        if (lowerTerm === "active" || lowerTerm === "1") {
            return rowData.Active === 1;
        }
        if (lowerTerm === "inactive" || lowerTerm === "0") {
            return rowData.Active === 0;
        }
        // 输入其他内容时返回false,不匹配任何行;若需显示所有行可改为return true
        return false;
    },
},

优化建议:抽离状态映射逻辑(可选)

为避免重复编写状态对应判断,可单独抽离映射对象,后续维护更便捷:

// 定义状态与文本的映射关系
const statusTextMap = {
    1: "active",
    0: "inactive"
};

// 简化后的customFilterAndSearch逻辑
customFilterAndSearch: (term, rowData) => {
    const lowerTerm = term.toLowerCase().trim();
    const rowStatusText = statusTextMap[rowData.Active];
    // 匹配状态文本或原始数值
    return rowStatusText === lowerTerm || rowData.Active.toString() === lowerTerm;
},

这样无论用户输入"Active"/"active"、"Inactive"/"inactive"还是1/0,都能正确筛选出对应行。

内容的提问来源于stack exchange,提问作者Ciaran Crowley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:18:22