我有一个按钮,可以将过滤器应用于jquery数据表
$("#buttonFilter").button().click(function() {
if (lboxColor.val() != null) {
jqTable.fnFilter($("option:selected", lboxColor).text(), 1);
}
});
它向我展示了例如60行的47行。 我尝试了.fnGetData()和fnGetNodes(),但它显示了所有行,但没有过滤。 我怎么能得到47行?
答案 0 :(得分:25)
对于使用DataTables 1.10+的任何人来说,如果你想要过滤(更好的术语:"搜索")行,我已经搜索了大约一个小时:
var table = $('.table').DataTable({...});
function selectOnlyFiltered(){
var filteredRows = table.rows({filter: 'applied'});
}
答案 1 :(得分:18)
对于数据表1.9及更高版本,此解决方案有效:
myDataTableHandle = $('#example1').dataTable(...);
...
...
var myFilteredRows = myDataTableHandle._('tr', {"filter":"applied"});
并且您不必包含单独的api插件。 :)
答案 2 :(得分:6)
如果您想要一个节点(DOM元素)集合,就像fngetNodes()一样,您可以使用'$'代替'_',就像这样table.$('tr', {"filter":"applied"});
'_'返回'TR'(html元素)的集合。
答案 3 :(得分:1)
在当前版本中,selector-modifier使用一组稍微不同的属性。
var table = $('#example').DataTable();
var rows = table.rows({"search" : "applied"});
您可以像这样遍历单元格数据:
table.rows({"search":"applied" }).every( function () {
var data = this.data();
});
一些有用的链接:
答案 4 :(得分:0)
对于那些感兴趣的人来说,这是一个具体的用例。
/**
* Select all the elements of the datatable which match the current user
* search (or all if no search).
*/
function dtable_selectAll()
{
idTable = 'myDataTable';
var rows = $('#' + idTable).dataTable()
.$('tr', {"filter":"applied"});
var oTT = TableTools.fnGetInstance(idTable);
$(rows).each(function (index, el){
oTT.fnSelect(el);
})
}
希望它有所帮助。
答案 5 :(得分:0)
对于那些努力从仅一列和仅从可见行中获取数据的人: 您实际上可以像这样组合“选择器”
var total = api
.column(2, { search: 'applied' }) // <-- only 3rd column && only visible after applied search
.data()
.reduce(function (a, b) {
return floatVal(a) + floatVal(b)
}, 0)
我还注意到有一些消息来源指出{page:'current'}是当前可见行的正确选择器,但是实际上,这可能会在分页之后为您提供可见行。
答案 6 :(得分:-1)