jqGrid четкие критерии поиска - PullRequest
4 голосов
/ 21 октября 2010

В настоящее время у меня настроена сетка с включенным поиском.Когда я запускаю поиск, все работает нормально, и я могу вернуть хорошие данные обратно в таблицу.Я вижу, что для параметра «_search» в URL установлено значение «true», и все в порядке.

Однако, когда поиск закончился, и данные больше не актуальны, я бы хотел перезагрузить сетку.для отображения предыдущих данных, которые были там (данные, отображаемые при начальной загрузке страницы).Я сделал функцию для вызова метода «trigger (« reloadGrid »)», но он просто отправляет те же данные, когда «_search» все еще установлен в «true».

Есть ли способ очиститьпоискать данные запроса и просто перезагрузить исходные данные, отображаемые при загрузке страницы, или, по крайней мере, установить значение «_search» обратно в «false», чтобы я мог проверить это?В настоящее время единственный способ отобразить исходные данные - перезагрузить страницу.

Ответы [ 2 ]

15 голосов
/ 22 октября 2010

Если вы используете поиск jqGrid, будут установлены следующие две вещи

  1. search параметр jqGrid будет установлен на true.
  2. postData параметр jqGrid будет изменен. Значением параметра postData является объект, имеющий некоторые свойства. В случае одиночного поиска будут установлены свойства searchField, searchString и searchOper. В случае расширенного поиска будет установлено только свойство filters параметра postData. (Свойство _search также будет установлено, но из другого компонента jqGrid, поэтому оно не важно для сброса поиска.)

Таким образом, для сброса поиска вы можете определить следующий обработчик событий для вашей кнопки «Сбросить поиск»:

$("#resetSearch").click(function() {
    var grid = $("#list");
    grid.jqGrid('setGridParam',{search:false});

    var postData = grid.jqGrid('getGridParam','postData');
    $.extend(postData,{filters:""});
    // for singe search you should replace the line with
    // $.extend(postData,{searchField:"",searchString:"",searchOper:""});

    grid.trigger("reloadGrid",[{page:1}]);
});

Вы можете увидеть все это вживую в следующей демонстрации . В демоверсии сначала нужно нажать кнопку «Поиск» на панели навигации и установить фильтр поиска. Затем вы можете нажать кнопку «Сбросить поиск» и сбросить ее.

2 голосов
/ 06 июля 2011

Чтобы очистить окна фильтра (как текст, так и выделение), было следующее дополнение (целая функция):

function filtReset() {

    $("#list").jqGrid('setGridParam',{search:false});

    var postData = $("#list").jqGrid('getGridParam','postData');

    $.extend(postData, { filters: "" });

    for (k in postData) {
        if (k == "_search")
            postData._search = false;
        else if ($.inArray(k, ["nd", "sidx", "rows", "sord", "page", "filters"]) < 0) {
            try {
                delete postData[k];
            } catch (e) { }

            $("#gs_" + $.jgrid.jqID(k), $("#list").get(0).grid.hDiv).val("");

        }
    }
    $("#list").trigger("reloadGrid", [{ page: 1}]);
    // for singe search you should replace the line with
    // $.extend(postData,{searchField:"",searchString:"",searchOper:""});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...