Подтвердить что ты не робот

JQuery DataTables - удалить fnFilter и отобразить все результаты

I current имеет тип данных, который имеет кнопку для каждой записи, которая при нажатии отображает другую информацию для этой учетной записи. Когда это происходит, я вызываю 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();
});
4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Ответ 4

в Datatables v1.10

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

выполнить трюк (очистить окно поиска)

Ответ 5

"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,