我的提醒正在运行,但我不知道如何使用rowData过滤我的其他数据表实例。 这是我的代码:http://codepen.io/smuglovsky/pen/YpNjXm?editors=1010
我学会了如何点击每一行并获取数据"在这里:https://datatables.net/release-datatables/examples/advanced_init/events_live.html
我还发现了如何从被点击的行中获取数据"在这里:https://datatables.net/reference/type/row-selector
我知道我几乎就在那里,但是我被困在我的代码笔的第460行:
$('#example-sections tbody').on('click', 'tr', function() {
var data = table_sections.row(this).data();
var rowData = table_sections.row(this).data();
// ... do something with rowData
alert('You clicked on ' + data[0] + '\'s row');
$.fn.dataTable.ext.search.push(
function(settings, data, rows, dataIndex, rowIndex, rowData) {
// I want to filter the rowData, just like the alert is doing
return data[0] == +data[0] ? true : false;
}
);
table_main.draw();
table_books.draw();
$.fn.dataTable.ext.search.pop();
});
答案 0 :(得分:1)
因此,使用“$ .fn.dataTable.ext.search”会向所有数据表实例添加搜索自定义函数。我认为你想要的是使用特定网格行点击中的值过滤其他DataTable实例。如果是这样,你会想要稍微改变一下这个问题。
以下解决方案假定“example-sections”网格的第一列对应于要在“table_main”和“table_books”列中搜索的列。如果是这样,您只需使用索引获取“table_main”和“table_books”的列,并使用您单击的行中的数据将搜索应用于该列。
$('#example-sections tbody').on('click', 'tr', function() {
var rowData = table_sections.row(this).data();
// ... do something with rowData
alert('You clicked on ' + rowData[0] + '\'s row');
// Lets build a regular expression that will give only exact matches.
var searchRegExp = new RegExp("^" + rowData[0] + "$");
// Ok so we are going to use a regex. Second param is to turn on
// search by a regular expression. The third param is to turn off "smart"
// searching which would conflict. The last param is to turn off case
// insensitive matching.
table_main.column(0).search(searchRegExp, true, false, false).draw();
table_books.column(0).search(searchRegExp, true, false, false).draw();
});
注意:对于“table_main.column(0)”,“0”是数据集中列的索引,因此如果您有隐藏列,那么这些列将计入此索引。例如,假设我的第一个可见列是“ID”列,但我有两个隐藏列,在“ID”列之前的“列”定义中定义,然后“ID”列的索引将为“2”而不是“0”。
编辑:将搜索更改为仅返回完全匹配。参考:https://datatables.net/reference/api/search()