数据表过滤表数据不对行进行任何更改

时间:2017-06-15 15:26:31

标签: jquery datatables

我试图根据列日期过滤数据表但没有成功,即使我按照我想要的方式过滤数据,但表的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);
            }

1 个答案:

答案 0 :(得分:2)

来自official documentation

  

不应将此方法与用于搜索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();