当单元格中有多个值/ html元素时,精确过滤

时间:2017-03-06 11:10:44

标签: yadcf

这可能是与YADCF相关的更多DataTables,但如果该功能不存在,我在这里要求它作为一个明显的增强。

我有一个列/ s,可以包含多个值'标记',类似于YADCF示例。允许通过这些标记过滤的过滤器生成正确。

JSFiddle here https://jsfiddle.net/wallacio/622704ep/6/

请参阅标题为区域 Rig 的列(请原谅可怕的颜色......!)

如果我希望只看到 South 中的事件,我需要使用filter_match_mode: "exact"(以排除西南,东南等地区的事件)

有一个事件(在未过滤的视图中排在第8位),其中包含标签" South"和#34;东南" Event containing South and South East tags

当过滤" South"时,此事件不会出现,大概是因为精确过滤器与整个单元格的内容匹配,而不是与其中的每个离散HTML元素相匹配。

我可以将filter_match_mode更改为"包含"但这会导致被标记的东西"东南"等出现,这是不可取的。

我已经通过源进行了拖网,并且可以看到在生成过滤器选项时会考虑这一点,但显然不是在过滤时,这就是为什么我想知道它是否是由如何引起的限制DataTables过滤器已实现。

1 个答案:

答案 0 :(得分:1)

您可以使用filter_type: 'custom_func',并为该特定列编写自己的过滤逻辑

column_number: 0,
filter_type: 'custom_func',
custom_func: myCustomFilterFunction,
data: ['one', 'two', 'three']

其中myCustomFilterFunction看起来像

function myCustomFilterFunction(filterVal, columnVal) {
        var found = false;
        if (columnVal === '') {
            return true;
        }
        switch (filterVal) {
        case 'one':
            found = //some logic goes here
            break;
        case 'two':
            found = //some logic goes here
            break;
        case 'three':
            found = //some logic goes here
            break;
        default:
            found = false;
            break;
        }

        if (found) {
            return true;
        }
        return false;
}