Все, что вы делаете, абсолютно правильно. Я бы порекомендовал вам продолжать использовать ту же конфигурацию: панель инструментов фильтрует для быстрого, интуитивно понятного и легкого поиска / фильтрации данных и расширенного поиска для расширенного поиска для создания более сложных фильтров. .
В текущей версии jqGrid модуль расширенного поиска использует postData.filters
для загрузки начальных фильтров. Фильтр панели инструментов, выполняющий поиск на другой стороне, не считывает данные с postData.filters
, а просто устанавливает их.
Если вы хотите сохранить отдельные фильтры для панели инструментов и выполнить расширенный поиск, я могу предложить следующий прием. Вы можете открыть расширенный фильтр сразу после инициализации сетки. Модуль поиска adnavce считывает postData.filters
при первом открытии диалогового окна, только если используются настройки по умолчанию recreateFilter: false
и loadDefaults: true
. После открытия вы можете сразу же закрыть диалоговое окно поиска, которое будет только отключено и не будет удалено.
var grid = $("#list"), prmSearch = {multipleSearch:true,overlay:false};
grid.jqGrid({
// ... jqgrid parameters
});
grid.jqGrid('navGrid','#pager',
{add:false,edit:false,del:false,search:true,refresh:true},
{},{},{},prmSearch);
// open the advance searching dialog
grid.searchGrid(prmSearch);
// close the advance searching dialog
$("#fbox_"+grid[0].id+" div.ui-closer").trigger("click");
grid.jqGrid('filterToolbar',{defaultSearch:'cn',stringResult:true});
Так что теперь вы можете использовать как панель инструментов, так и расширенный поиск с отдельными фильтрами. Благодаря использованию параметра overlay:false
в диалоговом окне поиска вы можете даже сбросить сеточные фильтры на панели инструментов поиска, не закрывая диалоговое окно предварительного поиска.
Вы можете увидеть соответствующую демонстрацию в прямом эфире здесь .
ОБНОВЛЕНО : Еще одна демонстрация Используйте toggleToolbar, чтобы скрыть панель инструментов фильтра, если открывается расширенный диалог, и отображать его, если расширенный диалог будет закрыт.
ОБНОВЛЕНО 2 : В другой ответ вы найдете, как удалить последнюю строку диалогового окна поиска (с «Инв №»), которая не является частью правил поиска от postData.filters
. Новая версия демо-версии здесь .