Как мне управлять поиском / фильтрами jqGrid? - PullRequest
6 голосов
/ 09 апреля 2010

У меня есть jqGrid с navBar, который имеет search: true и multipleSearch: true. Я хотел бы добавить кнопку в свой пользовательский интерфейс, которая автоматически добавляет дополнительное правило для поиска.

Я пытался манипулировать postData для фильтра напрямую, но значения, добавленные таким образом, не отображаются в пользовательском интерфейсе поиска.

Я также пытался получить доступ к окну поиска напрямую с помощью jQuery, например:

$('#fbox_list').searchFilter().add();
$('#fbox_list .sf .data input').each(function(index) {
    alert($(this).val());
});

Но, в дополнение к ощущению хакерства, он работает только в том случае, если пользователь уже нажал кнопку поиска (раздел fbox_list не создается при загрузке).

Кто-нибудь еще имел дело с такой проблемой?

Ответы [ 3 ]

7 голосов
/ 13 апреля 2010

Ради потомков, вот хак, который я сейчас использую.Сетка имеет идентификатор list, а пейджер имеет идентификатор pager:

jQuery(document).ready(function() {
    //Initialize grid.

    //Initialize the navigation bar (#pager)

    //Hack to force creation of the search grid.
    //The filter's ID is of the form #fbox_<gridId>
    jQuery('#pager .ui-icon-search').click();
    jQuery('#fbox_list').searchFilter().close();

    //Example button events for adding/clearing the filter.
    jQuery("#btnAddFilter").click(function() {
        //Adds a filter for the first column being equal to 'filterValue'.
        var postFilters = jQuery("#list").jqGrid('getGridParam', 'postData').filters;
        if (postFilters) {
            $('#fbox_list').searchFilter().add();
        }

        var colModel = jQuery("#list").jqGrid('getGridParam', 'colModel');
        //The index into the colModel array for the column we wish to filter.
        var colNum = 0;
        var col = colModel[colNum];

        $('#fbox_list .sf .fields select').last().val(col.index).change();
        $('#fbox_list .sf .data input').last().val('filterValue');

        $('#fbox_list .sf .ops select.field' + colNum).last().val('eq').change();

        $('#fbox_list').searchFilter().search();
    });

    jQuery("#btnClearFilter").click(function() {
        $('#fbox_list').searchFilter().reset();
    });
});
0 голосов
/ 21 ноября 2012

для очистки входов, выбора и сброса сетки

$("td#refresh_navGrid").click();
0 голосов
/ 06 января 2011

Если вы имеете в виду панель инструментов фильтра, вы можете сделать это: (status - это имя столбца, поэтому замените "#gs_status" w / "#gs_" + your_col_name

        jQuery("#distributor_grid").jqGrid('showCol',['status']);           
        jQuery(".ui-search-toolbar #gs_status")
            .val('ALL')
            ;

        $('#distributor_grid').RefreshData();  // triggers toolbar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...