2017-06-15 104 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! –