Reputation: 628
I am using the DataTables javscript library and I'm trying to filter a row out based on if a numerical value is greater than 60.
I'm trying to follow this example: http://datatables.net/reference/api/filter%28%29
The filter code looks like this:
table
.column( 3 )
.data()
.filter( function ( value, index ) {
return value > 60 ? true : false;
} )
The problem is all rows are still visible and no filtering has been done at all. Even if my function simply returns false all rows are still visible. What's going on here?
JSFiddle of example
Upvotes: 13
Views: 17507
Reputation: 318202
The example you're linking to is filtering the returning array of the data from the columns, not the rows themselves.
You can verify this by returning the content and logging it
var filteredArray = table.column( 3 )
.data()
.filter( function(value, index) {
return value > 60 ? true : false;
})
.draw();
console.log(filteredArray);
This is what the filter
method does, it filters the data when you return it with data()
, not the rows.
To filter the rows in place, you'd hook into the DataTables plugin, more specifically $.fn.dataTableExt.afnFiltering
, and do something like this
$.fn.dataTableExt.afnFiltering.push(
function (oSettings, aData, iDataIndex) {
return aData[3] < 60;
}
);
Documentation for DataTables filtering
Upvotes: 16