【发布时间】:2016-04-11 23:00:32
【问题描述】:
在数据表中,有这个过滤功能
$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex)
过滤所有表格。
我有两张表,我需要将过滤器应用于其中一张表。
如何让 Datatables 知道我只想过滤 table1 并保留 table2 原样?
【问题讨论】:
标签: javascript jquery datatables
在数据表中,有这个过滤功能
$.fn.dataTableExt.afnFiltering.push(function (oSettings, aData, iDataIndex)
过滤所有表格。
我有两张表,我需要将过滤器应用于其中一张表。
如何让 Datatables 知道我只想过滤 table1 并保留 table2 原样?
【问题讨论】:
标签: javascript jquery datatables
从 DataTables 创建者那里查看这个 sn-p。
$.fn.dataTableExt.afnFiltering.push(
function(settings, aData, iDataIndex) {
if (settings.nTable.id === 'myTableId') {
// filter example
} else {
// ...
}
}
);
您可以检查要过滤的表的id。这不是官方解决方案,但它有效。
【讨论】:
我在其他地方找到了对我有帮助的答案:
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;
});
这个对我有用,它的优点是你可以使用一个数组,所以你可以在过滤时忽略多个表。
【讨论】:
您可以使用 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 中所述
【讨论】: