JQGrid Показать детали фильтра в строке заголовка - PullRequest
2 голосов
/ 08 июля 2010

Можно ли вообще отобразить текущий примененный параметр фильтра в виде описательной строки, добавленной к основному заголовку в строке заголовка

т.е.

"Клиент - [Field1 = 'ABC' и Field2 = 'CDE']"

Не можете найти событие, к которому можно подключиться после применения фильтра?

Ответы [ 2 ]

3 голосов
/ 08 июля 2010

Я считаю, что вам не нужно иметь событие после поиска.При каждом поисковом запросе данные в сетке будут перезагружаться.Таким образом, вы можете использовать такие события, как beforeRequest, loadBeforeSend, serializeGridData, gridComplete или loadComplete.

. Из вашего примера заголовка я могу предположить, что вы используете «Расширенный поиск».Я хочу продемонстрировать только основную идею возможного решения, поэтому я выбрал loadComplete для реализации изменения захвата:

jQuery('#list').jqGrid({
    // ...
    loadComplete: function(data) {
        var postData = jQuery('#list').getGridParam("postData");
        var newCapture = "Title";
        if (postData._search === true && typeof postData.filters !== "undefined") {
            var filters = jQuery.parseJSON(postData.filters);
            newCapture = "Title: [";
            var rules = filters.rules;
            for (var i=0; i<rules.length; i++) {
                var rule = rules[i];
                var op = rule.op;  // the code name of the operation
                if (jQuery.fn.searchFilter && jQuery.fn.searchFilter.defaults &&
                    jQuery.fn.searchFilter.defaults.operators) {
                    // find op description 
                    var operators = jQuery.fn.searchFilter.defaults.operators;
                    for (var j=0; j<operators.length; j++) {
                        if (operators[j].op === rule.op) {
                            op = operators[j].text;
                            //op = $.jgrid.search.odata[j];
                            break;
                        }
                    }
                }
                newCapture += rule.field + " " + op + " '" + rule.data + "'";
                if (i+1 !== rules.length)
                    newCapture += ", ";
            }
            newCapture += "]";
        }
        jQuery('#list').setCaption(newCapture);
    }
});

Если вы не используете «Расширенный поиск», вам следует searchField, searchOper и searchString вместо filters для построения заголовка сетки на основе поискового кафетерия.

В настоящее время в примере я не использую локализации имен для работы, но ясно, что это можно сделать.

0 голосов
/ 08 июля 2010

Попробуйте подключиться к событию afterShowSearch , где вы бы обновили заголовок сетки. Из документов:

Это событие вызывается (если оно определено) каждый раз после отображения диалогового окна поиска

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