Как я управляю поиском/фильтрами jqGrid?

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

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

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

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

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

Кто-либо еще занимался проблемой как это?

6
задан AaronSieb 8 April 2010 в 22:26
поделиться

1 ответ

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

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();
    });
});
7
ответ дан 17 December 2019 в 00:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: