4

我正在尝试对具有 AJAX 源的数据表使用全局过滤,如下所示:

var usertable = $("#userstable").dataTable({
    "bProcessing": false,
    "bJQueryUI": false,
    "bAutoWidth": false,
    "bServerSide": true,
    "aLengthMenu": [[10, 30, 50, 100], [10, 30, 50, 100]],
    "iDisplayLength": 30,
    "sDom": '<"H"fl>t<"F"ip>',
    "sAjaxSource": "fetchmyusers.php",
    "sPaginationType": "full_numbers",
    "fnDrawCallback": function( oSettings ) {
        console.log('fnDrawCallback called');
    }
});

数据表及其默认排序/过滤选项工作正常。现在我只想显示那些在特定时间段内注册的用户。为此,我从用户那里获取开始日期和结束日期的输入,然后单击锚点,我想根据该日期过滤用户。

相同的jquery代码是:

$("#customdatefilter").on('click',function(e) {
    e.preventDefault();
    usertable.fnDraw();
    //console.log('redrawn');
});

然后我需要通过以下方式编写自定义过滤函数:

$.fn.dataTableExt.afnFiltering.push(
    function( oSettings, aData, iDataIndex ) {
      console.log('filtering..');

      //filter data as per my input

      return true; 
      //in some cases false
});

但这里的问题是这个自定义过滤器永远不会被调用。但是数据重绘回调执行成功。

1) 这种类型的自定义过滤是否适用于 AJAX 来源的数据表?

2)我的任何初始化选项是否丢失/错误?

我在他们的网站上找到了类似的查询,但对我没有帮助。

4

1 回答 1

2

参考https://datatables.net/forums/discussion/15952/afnfiltering-function-never-called#Comment_56134我假设自定义过滤功能永远不会适用于服务器端处理模式。

于 2015-06-08T09:41:39.670 回答