DataTables - 使用单个下拉菜单在多列中搜索

Posted

技术标签:

【中文标题】DataTables - 使用单个下拉菜单在多列中搜索【英文标题】:DataTables - Search in multiple columns with a single drop down 【发布时间】:2017-09-09 02:07:39 【问题描述】:

我正在使用 DataTables,我正在尝试在带有下拉列表的表中搜索结果。但不是搜索一列,我需要搜索两个特定列。

以下语法适用于单列,但如何处理多列?

var table = $('#example1').DataTable();
    $("#filter").on('change', function() 
        table.column([4]).search($(this).val()).draw();
    );    

我尝试这样做,但是当我使用此代码时,它只搜索第一列中的结果,例如第 4 列。并忽略其余部分。

        table.column([4,5]).search($(this).val()).draw();

什么是正确的方法?

【问题讨论】:

How can I search multiple columns in DataTables的可能重复 不是重复的,因为范围搜索在不同输入的给定范围内对单个列执行搜索。 @Terry 不一样,抱歉。我需要在两个特定列中进行搜索。 对于您的场景,这里是另一个名为 fnMultiFilter 的数据表扩展,它在多列上进行搜索。 jsfiddle.net/mmushtaq/v65db2ez 。看到这个 【参考方案1】:

让我们在这里总结所有事情。它也会帮助其他人。

您可以通过以下方式实现:

table.column(4).search(this.value).column(5).search(this.val‌​ue).draw();

它将在 4 列上执行搜索(4 是列的索引),然后根据提供的过滤值过滤来自 5 列的数据,最后绘制表格。

要记住的一点是,过滤器应用于两列,因此两列都必须包含匹配的数据。

Here is its filddle


这可以通过使用 fnMultiFilter 来实现,因为它的文档说明:

此插件为 DataTables 添加了在单个调用中设置多个列过滤条件的能力(如果使用服务器端处理,则特别有用)。与列 sName 参数结合使用,只需传入一个对象,其中键/值对是您希望搜索的列,以及您希望搜索的值。

【讨论】:

【参考方案2】:

使用columns() 代替 column():

var table = $('#example1').DataTable();
$("#filter").on('change', function() 
    table.columns([4,5]).search($(this).val()).draw();
); 

【讨论】:

【参考方案3】:

从文档中,您应该使用.columns()(注意复数)

【讨论】:

【参考方案4】:

对于多列之间的 OR 搜索,请使用禁用搜索列

columns.searchableSince: Enable or disable search on the data in a certain column.

或者,您也可以使用 html 属性从搜索中删除列

<th data-searchable=false>

【讨论】:

以上是关于DataTables - 使用单个下拉菜单在多列中搜索的主要内容,如果未能解决你的问题,请参考以下文章

Bootstrap 的下拉菜单被数据表隐藏

如何让下拉选择从 Django 模型中填充模板中的 DataTables 表?

Datatables Jquery Bootstrap 5在行中创建动态下拉列表并将数据发布到php文件

如何在 Bootstrap 中将单个下拉菜单附加到正文

Bootstrap 4 下拉菜单在数据表中不可见

jquery datatables:如何清除列搜索过滤器