数据表 - 自定义过滤器和分页

Posted

技术标签:

【中文标题】数据表 - 自定义过滤器和分页【英文标题】:datatables - Custom filter and pagination 【发布时间】:2018-06-14 04:55:00 【问题描述】:

我已经为我的数据表创建了自定义过滤器:

    $.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();

它运行良好,但有一个例外 - 分页。当我应用这个过滤器时,我只返回了第一页,仅此而已。

这是我的数据表初始化:

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

【问题讨论】:

因为您正在通过$.fn.dataTable.ext.search.pop();立即删除过滤器 @davidkonrad 我删除了它,但仍然无法正常工作,显示 (xxxx) 条记录,但只显示过滤的第一页 @davidkonrad 感谢您的提示,我应用了它;)但是这个分页仍然有问题:( 无法调试任何现有代码,但如果您坚持认为过滤器确实在工作,请尝试注释掉 deferRender: true,,看看是否有什么不同。 请自行回答(并记得将其标记为已接受)我只是有一种预感,我相信答案可以帮助未来的访客! :) 【参考方案1】:

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

deferRender: true

注释掉就可以了:)

【讨论】:

以上是关于数据表 - 自定义过滤器和分页的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 分页自定义

php 分页自定义查询

php 分页自定义查询

PHP wordpress分页自定义查询

swift 中心分页自定义布局

页面分页自定义插件