我正在使用datables,我需要过滤其值大于50的特定列,我尝试使用以下代码,但没有任何反应
oTable.api().column( 10 )
.data()
.filter( function ( value, index ) {
var htmlObject = $(value);
var ball = htmlObject.text();
return parseInt(ball) > 50 ? true : false;
})
.draw();
答案 0 :(得分:2)
“什么也没有发生”,因为预计什么也不会发生。 filter()
应该用于创建内部数据集或提取数据的子集-如果要过滤表中的行,应使用custom filter。看起来可能像这样:
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
return data[10] > 50 //type conversion is not necessary
})
在之前 .search()
(和其他过滤器),它用作“主”过滤器。如果要删除过滤器,则可以使用$.fn.dataTable.ext.search.pop()
。所以
$.fn.dataTable.ext.search.push( filter function )
table.draw()
$.fn.dataTable.ext.search.pop()
答案 1 :(得分:1)
如果要检查大于5的任何数字,则可以使用dataTable中的隐藏列编写三进制条件。 使用过滤器将MORETHAN5RECORD作为值添加到选择下拉列表中,以过滤5条以上的记录。
Here is the Code :
var table = $('#record_table').DataTable({});
$('.FILTERCLASS').on('keyup change', function () {
buildFilters(table,this);
});
function buildFilters(table, element){
var type = $(element).data('type'),
col = $(element).data('col'),
id = $(element).id;
table
.column( col )
.search( element.value )
.draw();
}
<td><?php
echo (($row['xyz'] >= 5) ? $val['xyz']."(MORETHAN5RECORD)" : $val['xyz']); ?> </td>