web-dev-qa-db-fra.com

JQuery DataTables - Supprimer fnFilter et afficher tous les résultats

J'ai actuellement une table de données qui a un bouton pour chaque enregistrement qui, lorsque vous cliquez dessus, affiche d'autres informations pour ce compte. Lorsque cela se produit, j'appelle fnFilter () pour filtrer cette ligne spécifique afin qu'aucune autre ne soit affichée et l'utilisateur sache que les sous-informations que j'affiche sont pour ce compte spécifique. Ce que je voudrais faire, c'est lorsqu'un utilisateur clique de nouveau dans la barre d'outils de recherche, il masque les sous-informations que j'ai affichées, puis efface le filtre et affiche tous les enregistrements originaux disponibles. Tout fonctionne bien, sauf que le filtre n'est pas effacé, donc seule la ligne sélectionnée à l'origine est toujours affichée.

Je ne sais pas ce que je manque. J'ai tout essayé, de l'utilisation de fnFilter (''), à fnDraw (), à fnReloadAjax (). Rien de tout cela (ou une combinaison) ne semble fonctionner!

MISE À JOUR J'ai semblé avoir isolé le problème. Si je supprime la colonne # du fnFilter (accountid, 7), l'utilisation de fnFilter ('') réaffiche tous les enregistrements. Cependant, j'ai vraiment besoin de filtrer par cette colonne spécifique car c'est la seule colonne qui contient des valeurs uniques pour chaque enregistrement. Des idées? J'ai essayé d'utiliser fnFilter ('', null) mais sans succès.

Voici mon code:

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

Ah, je semblais l'avoir compris. Vous devez effacer le filtre sur cette colonne spécifique ET le filtre global:

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

Il est simple d'effacer tous les filtres en utilisant Datatables> 1.10:

oTable.search( '' ).columns().search( '' ).draw();
6
Dragan Mihajlović

Pour moi, ce plugin a très bien fonctionné:

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

0
Daniel F

sur Datatables v1.10

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

faites le tour (décochez la case de recherche)

0
Alfred Severo