Я использую 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();
"Ничего не происходит", потому что ничего не ожидается. 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()
Если вы хотите проверить любое число больше 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>