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 从 observableArray 中删除项目后 UI 不更新
如何通过 Ajax 在 jQuery DataTables 中显示 JSON 数据?