JQuery DataTables - удалить fnFilter и отобразить все результаты - PullRequest
29 голосов
/ 08 декабря 2011

У меня есть дата, в которой есть кнопка для каждой записи, которая при нажатии отображает другую информацию для этой учетной записи. Когда это происходит, я вызываю fnFilter (), чтобы отфильтровать эту конкретную строку, чтобы другие не отображались, и пользователь знает, что отображаемая мной вспомогательная информация относится к этой конкретной учетной записи. Что я хотел бы сделать, так это когда пользователь щелкает обратно на панели инструментов поиска, он скрывает отображаемую мной вспомогательную информацию, затем очищает фильтр и показывает все доступные исходные записи. Все работает нормально, за исключением того, что фильтр не очищается, поэтому отображается только первоначально выбранная строка.

Не уверен, что мне не хватает. Я пробовал все, от использования fnFilter (''), fnDraw (), fnReloadAjax (). Ни один из них (или любая комбинация), кажется, не работает!

ОБНОВЛЕНИЕ Я, кажется, изолировал проблему. Если я удаляю столбец # из 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();
});

Ответы [ 5 ]

50 голосов
/ 08 декабря 2011

Ах, я, кажется, понял это. Необходимо очистить фильтр в этом конкретном столбце И глобальный фильтр:

oTable.fnFilter('',7);
oTable.fnFilter('');
6 голосов
/ 21 августа 2015

Очистить все фильтры просто, используя Datatables> 1.10:

oTable.search( '' ).columns().search( '' ).draw();
0 голосов
/ 31 октября 2017

в Datatables v1.10

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

сделать трюк (очистить окно поиска)

0 голосов
/ 18 сентября 2014

Для меня этот плагин прекрасно работал:

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

0 голосов
/ 25 июня 2014
"sPaginationType" : "bootstrap",
"iDisplayLength": 25,
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
"bStateSave" : false,

если вы хотите сохранить результаты поиска, укажите

"sPaginationType" : "bootstrap",
"iDisplayLength": 25,
"aLengthMenu": [[25, 50, 100, -1], [25, 50, 100, "All"]],
"bStateSave" : true,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...