[英]jQuery datatables - how to use filter()?
我嘗試使用https://datatables.net/reference/api/filter()但沒有效果。 我想通過單擊復選框來過濾列。
碼:
var table = $('#table').DataTable();
var filteredData = table
.column( 0 )
.data()
.filter( function ( value, index ) {
return value > 4000 ? true : false;
} );
$("#show_only_packed").click(function() {
if ($(this).is(":checked")) {
filteredData.draw();
}
});
其實我用的是search()
但我想了解如何使用filter()
$("#show_only_packed").click(function() {
if ($(this).is(":checked")) {
table.column( 3 ).search( 'Spakowano' ).draw();
} else {
table.column( 3 ).search('').draw();
}
});
原因
API方法filter()
經常與search()
混淆,但它不會影響表。 它只根據給定的條件返回過濾的數據。
解
您需要使用自定義過濾 。
例如:
$('#show_only_packed').on('click', function(){
if(this.checked){
$.fn.dataTable.ext.search.push(
function (settings, data, dataIndex){
return (data[0] > 4000) ? true : false;
}
);
}
table.draw();
if(this.checked){
$.fn.dataTable.ext.search.pop();
}
});
DEMO
有關代碼和演示,請參閱此jsFiddle 。
好吧, filter()
不應該與search()
函數混淆。 filter()
實際上不會在您的表上產生任何直接輸出 ,但可以在幕后操縱數據 。
假設您的表中有一個人員列表,其年齡為其中一個屬性。 你的目標是計算這一組中的老年人(超過60歲)。 然后使用這樣的過濾器很容易:
var filteredData = table.column(3)
.data()
.filter(function (value, index) {
if (parseInt(value) > 60) {
eldersCount++;
}
});
在這里,我們將年齡列定義為第3列(基於零的索引),我們進行操作......
這是小提琴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.