2011-12-07 6 views
28

I corrente ha un datatable che ha un pulsante per ogni record che quando cliccato visualizza altre informazioni per quell'account. Quando ciò accade, chiamo fnFilter() per filtrare quella riga specifica in modo che non vengano visualizzati altri e l'utente sappia che le sotto-informazioni che mostro sono per quell'account specifico. Quello che vorrei fare è quando un utente fa clic indietro nella barra degli strumenti di ricerca, nasconde le informazioni secondarie che ho visualizzato, quindi cancella il filtro e mostra tutti i record originali disponibili. Tutto funziona correttamente, tranne per il fatto che il filtro non viene cancellato, quindi viene visualizzata solo la riga selezionata in origine.JQuery DataTables - Rimuovi fnFilter e visualizza tutti i risultati

Non so cosa mi manca. Ho provato tutto da usare fnFilter (''), a fnDraw(), a fnReloadAjax(). Nessuna di queste (o nessuna combinazione) sembra funzionare!

UPDATE Mi sembrava di aver isolato il problema. Se rimuovo la colonna # da fnFilter (accountid, 7), usando fnFilter ('') ri-visualizza tutti i record. Tuttavia, ho davvero bisogno di filtrare da quella colonna specifica in quanto è l'unica colonna che contiene valori univoci per ogni record. Qualche idea? Ho provato a usare fnFilter ('', null) ma senza successo.

Ecco il mio codice:

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(); 
}); 

risposta

49

Ah mi sembrava di aver capito. necessario cancellare il filtro su quella colonna specifica e il filtro globale:

oTable.fnFilter('',7); 
oTable.fnFilter(''); 
-2
"sPaginationType" : "bootstrap", 
"iDisplayLength": 25, 
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]], 
"bStateSave" : false, 

se si desidera salvare i risultati di ricerca poi citare

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

Mi manca qualcosa o fa questa risposta completamente domanda diversa? – EWit

5

E 'semplice t o cancellare tutti i filtri utilizzando DataTables> 1.10:

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

Sembra che fnFilter() sia stato eliminato e questa è ora la risposta corretta corrente. –

0

sulla DataTable v1.10

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

fare il trucco (deselezionare la casella di ricerca)