首页 > 解决方案 > 制表符 - 自定义标题过滤器和 searchData() 的问题

问题描述

我正在使用 searchData() 来计算不同条件下的行数以显示给用户,而不会影响表本身。具体来说,一个列是“可用的”,我想根据过滤条件集显示可用和不可用状态有多少行。大多数过滤器是正常的默认类型标题过滤器。

为此,我使用 dataFiltered() 回调。在回调中,我得到一个列表中的所有过滤器,然后在列表中添加和不添加“可用”过滤器的情况下进行计数。问题是我有一列带有自定义标题过滤器,并且 Tabulator 在调用 searchData() 时会抱怨该列是否处于活动状态。自定义过滤器按表中的预期工作。相关的代码片段是:

//table def
    dataFiltered:function(filters, rows) { SetCounts(filters, rows) },
// col def
    {title:"Sex", field:"sex", visible:true, hozAlign:"center", headerSort:false,
        headerFilter:true, headerFilterFunc:customSexFilter,
    },

// custom filter
    function customSexFilter(headerValue, rowValue, rowData, filterParams) {
        return (headerValue == rowValue) || (headerValue == "M" && rowValue == "N") || (headerValue == "F" && rowValue == "S");
    }

// dataFiltered callback (simplified; one of two cases shown)
    var availFilter = { field: "avail", type: "like", value: "A"};
    function SetCounts(filters, rows) {
        if (!table) return;
        var filt = table.getHeaderFilters().concat(filters.slice());
        var nAll = rows.length;
        var fA = filt.slice();
        fA.push( availFilter );
        var nAvail = table.searchData(fA).length;
        \$("#rowCount").html([nAll, '/', nAvail, 'A'].join(''));
    }

我得到的错误是Filter Error - No such filter type found, ignoring: function o(o) 过滤器本身显示为

field: "sex"
type:o(o)
value: "F"

我研究了文档,但无法弄清楚我做错了什么。还是不支持?4.6 版。

标签: tabulator

解决方案


推荐阅读