数据表 - 仅应用于某些表的过滤器

时间:2016-04-11 23:00:32

标签: javascript jquery datatables

在数据表中,有这个过滤功能

$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex)

过滤所有表格。

我有两个表,我需要将过滤器应用于其中一个表。

如何让Datatables知道我只想过滤table1并保留table2原样?

3 个答案:

答案 0 :(得分:2)

从DataTables创建者处查看此代码段。

https://www.datatables.net/forums/discussion/16623/using-fn-datatableext-afnfiltering-push-to-filter-tables

$.fn.dataTableExt.afnFiltering.push(
    function(settings, aData, iDataIndex) {
        if (settings.nTable.id === 'myTableId') {
            // filter example
        } else {
            // ...
        }
    }
);

您可以检查要过滤的表格的id。它不是官方的解决方案,但它确实有效。

答案 1 :(得分:1)

我在其他地方找到了一个帮助我的答案:

https://stackoverflow.com/a/11545376/4896102

刚刚在函数

中添加了这个
//array with the tables IDs you want the filtering function to ignore
var allowFilter = ['yourTableId1', 'youTableId2'];

$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex) 
{
    // check if current table is part of the allow list
    if ($.inArray(oSettings.nTable.getAttribute('id'), allowFilter ) == -1 )
    {
       // if not table should be ignored
       return true;
    }
    //rest of the code
    return false;
});

这个对我有用,它有一个优点,你可以使用一个数组,这样你可以在过滤时忽略多个表。

答案 2 :(得分:0)

您可以使用API​​的DataTables .search().draw()方法。请参阅online documentation

var dt1 = $('#table1').DataTable();
dt1.search('search text').draw();

另见fiddle

作为附录,我只想提一下,在1.10+ DataTables中,有两种方法可以初始化表:.dataTable().DataTable()。第二个返回新API,这是我上面使用的。如果您使用第一个,您仍然可以使用$( selector ).dataTable().api()检索新API,如online documentation

中所述