2017-06-15 124 views
0

我想基于列日期没有成功过滤的DataTable,即使我得到过滤数据,如我想要的,但该表的用户界面是不改变,我在这里错过了什么? 我有这样的代码:数据表滤波器

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

你可以把你的js代码拨弄,使其文章调试?或者在这里显示代码。 –

回答

1

official documentation

,此方法不应与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(); 
+0

自定义过滤时,实际上它使用搜索... –

+0

@ OffirPe'er,在DataTable的条款过滤只返回你的数据,但不会改变用户界面,搜索确实会改变用户界面,你可以检索数据使用[选择修饰符](https ://datatables.net/reference/type/selector-modifier)。 –

+0

按预期工作,thx! –