I have a button that apply filter to jquery datatable
$("#buttonFilter").button().click(function() {
if (lboxColor.val() != null) {
jqTable.fnFilter($("option:selected", lboxColor).text(), 1);
}
});
It shows me for example 47 rows from 60. I tried .fnGetData() and fnGetNodes() but it shows me all rows, but not filtered. How could I get 47 rows?
I've been searching for about an hour, for anyone using DataTables 1.10+ if you want to get the filtered (better term: "searched") rows:
var table = $('.table').DataTable({...});
function selectOnlyFiltered(){
var filteredRows = table.rows({filter: 'applied'});
}
For datatables 1.9 and later this solution works:
myDataTableHandle = $('#example1').dataTable(...);
...
...
var myFilteredRows = myDataTableHandle._('tr', {"filter":"applied"});
and you won't have to include a separate api plugin. :)
Just in case you want a collection of nodes (DOM elements) just like fngetNodes(), you can use the '$' instead of the '_' like this table.$('tr', {"filter":"applied"});
the '_' returns a collection of 'TR' (html elements).
For those struggling to get data from only one column AND only from visible rows: you can actually combine the "selectors" like this
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)
I also notices several sources stating { page: 'current' } would be the right selector for currently visible rows, but this one actually gives you the rows visible after a possible pagination.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With