JQuery DataTables - 删除 fnFilter 并显示所有结果

Posted

技术标签:

【中文标题】JQuery DataTables - 删除 fnFilter 并显示所有结果【英文标题】:JQuery DataTables - Remove fnFilter and display all results 【发布时间】:2012-01-15 10:04:46 【问题描述】:

我目前有一个数据表,其中每个记录都有一个按钮,单击该按钮会显示该帐户的其他信息。发生这种情况时,我调用 fnFilter() 来过滤该特定行,以便不显示其他行,并且用户知道我显示的子信息是针对该特定帐户的。 我想做的是,当用户在搜索工具栏中单击返回时,它会隐藏我显示的子信息,然后清除过滤器并显示所有可用的原始记录。 一切正常,只是过滤器没有被清除,所以仍然只显示最初选择的行。

不知道我错过了什么。我已经尝试过从使用 fnFilter('') 到 fnDraw() 到 fnReloadAjax() 的所有方法。这些(或任何组合)似乎都不起作用!

更新我似乎已经隔离了这个问题。如果我从 fnFilter(accountid,7) 中删除列 #,则使用 fnFilter('') 会重新显示所有记录。但是,我确实需要按该特定列进行过滤,因为它是唯一包含每条记录的唯一值的列。有任何想法吗?我确实尝试过使用 fnFilter('',null) 但没有成功。

这是我的代码:

var oTable = $('.mypbhs_accounts').dataTable(
        "bProcessing": true,
        "sAjaxSource": 'sql/mypbhs_accounts.php',      
        "aaSorting": [[1, "asc" ]],
        "bJQueryUI": true,
        "sPaginationType": "full_numbers",
        //"bStateSave": true, //Use a cookie to save current display of items
        "aoColumns": [
            "asSorting": [  ], "sClass":"center",
            null,
            null,
            null,
            null,
            null,
            null,
             "bSearchable": true, "bVisible": false ,       
             "bSearchable": true, "bVisible": false        
        ],
        "bScrollCollapse": true,
        "sScrollX": "100%",
         "fnInitComplete": function() 
                oTable.fnAdjustColumnSizing();
         
    );
/*** CLEAR CURRENT ACCOUNT INFO ***/
$(document).on('click','.mypbhs_content .dataTables_filter',function() //THIS IS CALLED WHEN USER CLICKS INTO THE SEARCH BAR
    $('.mypbhs_content .dataTables_filter :input').val(''); //CLEAR CURRENT VALUE IN THE SEARCH BAR
    oTable.fnFilter('');
    //oTable.fnDraw();
    //oTable.fnReloadAjax();
    $('.mypbhs_truform_info').empty(); //REMOVE SUB-INFORMATION SO IT DOESNT GET ASSOCIATED WITH WRONG ACCOUNT
    $('.control_bar').children('ul.mypbhs_account_controls').empty();
);

【问题讨论】:

【参考方案1】:

关于 Datatables v1.10

$('.dataTables_filter input[type=search]').val(''); 

解决问题(清除搜索框)

【讨论】:

【参考方案2】:

使用 Datatables > 1.10 清除所有过滤器很简单:

oTable.search( '' ).columns().search( '' ).draw();

【讨论】:

看来 fnFilter() 已被淘汰,现在这是当前正确答案。【参考方案3】:

对我来说这个插件很好用:

https://datatables.net/plug-ins/api/fnFilterClear

【讨论】:

【参考方案4】:
"sPaginationType" : "bootstrap",
"iDisplayLength": 25,
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
"bStateSave" : false,

如果您想保存搜索结果,请提及

"sPaginationType" : "bootstrap",
"iDisplayLength": 25,
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
"bStateSave" : true,

【讨论】:

是我遗漏了什么还是回答了一个完全不同的问题?【参考方案5】:

啊,我好像明白了。 必须清除该特定列上的过滤器和全局过滤器:

oTable.fnFilter('',7);
oTable.fnFilter('');

【讨论】:

以上是关于JQuery DataTables - 删除 fnFilter 并显示所有结果的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTables - 删除标签

使用 jquery.dataTables 从 observableArray 中删除项目后 UI 不更新

jQuery DataTables:如何更改分页活动颜色?

如何通过 Ajax 在 jQuery DataTables 中显示 JSON 数据?

JQuery Datatables 表格工具,删除 PDF 导出

jQuery dataTables 排序不适用于 dd-mm-yyyy 格式