29 votos

JQuery DataTables - Eliminar fnFilter y mostrar todos los resultados

Actualmente tengo una tabla de datos que tiene un botón para cada registro que al ser pulsado muestra otra información de esa cuenta. Cuando esto sucede, llamo a fnFilter() para filtrar esa fila específica para que no se muestren otras y el usuario sepa que la sub-información que muestro es para esa cuenta específica. Lo que me gustaría hacer, es que cuando un usuario vuelva a hacer clic en la barra de búsqueda, oculte la subinformación que mostré, luego borre el filtro y muestre todos los registros originales disponibles. Todo funciona bien, excepto que el filtro no se borra, por lo que sólo se muestra la fila originalmente seleccionada.

No estoy seguro de lo que me falta. He intentado todo, desde usar fnFilter(''), hasta fnDraw(), pasando por fnReloadAjax(). Ninguno de ellos (o cualquier combinación) parece funcionar.

ACTUALIZACIÓN Parece que he aislado el problema. Si elimino la columna # del fnFilter(accountid,7), utilizando fnFilter('') se vuelven a mostrar todos los registros. Sin embargo, realmente necesito filtrar por esa columna específica, ya que es la única que contiene valores únicos para cada registro. ¿Alguna idea? 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();
});

50voto

James Hickman Puntos 1937

Ah parece que lo he solucionado. Hay que borrar el filtro de esa columna específica Y el filtro global:

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

0voto

Daniel F Puntos 28

Para mí este plugin funcionó muy bien:

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

-2voto

raama ragavan Puntos 1
"sPaginationType" : "bootstrap",
"iDisplayLength": 25,
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
"bStateSave" : false,

si quieres guardar los resultados de la búsqueda entonces menciona

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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X