web-dev-qa-db-ja.com

JQuery DataTables-fnFilterを削除してすべての結果を表示する

現在、各レコードのボタンがあり、クリックするとそのアカウントの他の情報が表示されるデータテーブルがあります。これが発生した場合、fnFilter()を呼び出して特定の行をフィルタリングし、他の行が表示されないようにし、ユーザーが表示するサブ情報がその特定のアカウントに関するものであることを認識します。私がやりたいのは、ユーザーが検索ツールバーでクリックして、表示したサブ情報を非表示にし、フィルターをクリアして、利用可能なすべての元のレコードを表示することです。すべて正常に機能しますが、フィルターがクリアされないため、最初に選択された行のみが表示されます。

何が欠けているのかわかりません。 fnFilter( '')の使用からfnDraw()、fnReloadAjax()まで、すべてを試しました。これら(またはその組み合わせ)のどれも機能しないようです!

[〜#〜] update [〜#〜]問題を切り分けたようです。 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();
});
29
JimmyJammed

ああ、私はそれを理解したようだ。その特定の列のフィルターとグローバルフィルターをクリアする必要があります。

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

Datatables> 1.10を使用してすべてのフィルターをクリアするのは簡単です:

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

私にとって、このプラグインは非常にうまく機能しました:

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

0
Daniel F

datatables v1.10で

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

トリックを行う(検索ボックスをクリアする)

0
Alfred Severo