2011-12-07 44 views
28

Tengo una tabla de datos que tiene un botón para cada registro que, al hacer clic, muestra otra información para esa cuenta. Cuando esto sucede, llamo a fnFilter() para filtrar esa fila específica para que no se muestren otras y el usuario sabe que la información secundaria que visualizo corresponde a esa cuenta específica. Lo que me gustaría hacer, es cuando un usuario hace clic atrás en la barra de herramientas de búsqueda, oculta la subinformación que mostré, luego borra el filtro y muestra todos los registros originales disponibles. Todo funciona bien, excepto que el filtro no se borra, por lo que solo se muestra la fila originalmente seleccionada.JQuery DataTables - Eliminar fnFilter y mostrar todos los resultados

No estoy seguro de lo que me falta. He intentado todo desde usar fnFilter (''), hasta fnDraw(), hasta fnReloadAjax(). ¡Ninguno de estos (o ninguna combinación) parece funcionar!

ACTUALIZACIÓN que parecía haber aislado el problema. Si elimino la columna # de fnFilter (accountid, 7), el uso de fnFilter ('') vuelve a mostrar todos los registros. Sin embargo, realmente necesito filtrar por esa columna específica ya que es la única columna que contiene valores únicos para cada registro. ¿Algunas ideas? Intenté usar fnFilter ('', null) pero no tuve éxito.

Aquí está mi código:

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

Respuesta

49

Ah Me parecía haberse dado cuenta. tiene que despejar el filtro en esa columna específica y el filtro global:

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

si desea guardar los resultados de búsqueda a continuación mencionan

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

Me estoy perdiendo algo o ¿Esta respuesta completamente pregunta diferente? – EWit

5

es simple t o borrar todos los filtros utilizando tablas de datos> 1.10:

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

Parece que fnFilter() se eliminó y esta es ahora la respuesta correcta actual. –

0

en DataTables v1.10

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

hacer el truco (desactive la casilla de búsqueda)

Cuestiones relacionadas