我为我的DataTables创建了自定义过滤器:
$.fn.dataTable.ext.search.push(function(settings, data, dataIndex) {
var row = table.row(dataIndex).node();
if (checked) {
if ($(row).data('distributed') == 0) {
return true;
}
return false;
} else {
return true;
}
});
table.draw();
$.fn.dataTable.ext.search.pop();
它的工作正常,但有一个例外 - 分页。当我应用这个过滤器时,我只返回了第一页,仅此而已。
这是我的DataTable init:
var table = $('#invitation__table').DataTable({
"ordering": false,
"bLengthChange": false,
pageLength: 50,
deferRender: true,
ajax: '{!! route('datatables', ['weekend' => $weekend, 'type' => $type]) !!}',
columns: [
{ data: 'names', name: 'names' },
{ data: 'invitation_type', name: 'invitation_type' },
{ data: 'exhibitor', name: 'exhibitor' },
{ data: 'contact', name: 'contact' },
{ data: 'custom_access', name: 'custom_access', className: 'text-center' },
{ data: 'vip_room', name: 'vip_room', className: 'text-center' },
{ data: 'status', name: 'status', className: 'text-center' }
]
});
过滤概念
if(checkboxIsChecked) {
if(rowHasDataAttributeWithValue == 1) {
// hide this row
}
} else {
// show all rows
}
答案 0 :(得分:1)
感谢@davidkonrad的帮助,问题是:
deferRender: true
注释掉并且正常工作:)