【问题标题】:DataTables - Search in multiple columns with a single drop downDataTables - 使用单个下拉菜单在多列中搜索
【发布时间】: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();

什么是正确的方法?

【问题讨论】:

标签: javascript datatable datatables


【解决方案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>
        

        【讨论】:

          猜你喜欢
          • 2021-12-09
          • 1970-01-01
          • 2020-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多