我试图根据列日期过滤数据表但没有成功,即使我按照我想要的方式过滤数据,但表的UI没有变化,我在这里缺少什么? 我有这段代码:
var filterTable = hpDataTable.
column(1).
data().
filter(function (value, index, api) {
var today = new Date();
today.setHours(0, 0, 0, 0);
var dateFromColumn = moment(value).toDate();
return dateFromColumn < today ? false : true;
//there is no affect on the table ui.
}).draw();
//filterTable returns the data I want.
console.log(filterTable);
}
答案 0 :(得分:2)
不应将此方法与用于搜索DataTable中的记录的
search()
混淆 - 即filter()
方法不会更改DataTable中显示的行。
您需要实施custom filtering。
例如:
var today = new Date();
today.setHours(0, 0, 0, 0);
// Apply search criteria
$.fn.dataTable.ext.search.push(
function( settings, data, dataIndex ) {
var dateFromColumn = moment(data[1]).toDate();
return dateFromColumn < today ? false : true;
}
);
// Redraw table
hpDataTable.draw();
// Retrieve data
var data = hpDataTable.column(1, { search: 'applied' }).data();
// Restore search criteria
$.fn.dataTable.ext.search.pop();