datatables - 自定义过滤器和分页

时间:2018-01-04 12:44:21

标签: jquery datatable pagination datatables

我为我的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
}

1 个答案:

答案 0 :(得分:1)

感谢@davidkonrad的帮助,问题是:

deferRender: true

注释掉并且正常工作:)