在数据表中,有这个过滤功能
$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex)
过滤所有表格。
我有两个表,我需要将过滤器应用于其中一个表。
如何让Datatables知道我只想过滤table1
并保留table2
原样?
答案 0 :(得分:2)
从DataTables创建者处查看此代码段。
$.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