Интеграция панели инструментов фильтра jqGrid с Spring 3 MVC - PullRequest
1 голос
/ 26 марта 2012

Как мне получить значения для полей, в которых выполняется поиск в панели поиска jqGrid?

Я использую Spring 3 MVC для своей серверной работы.

В настоящее время подпись моего метода выглядит как

public @ResponseBody PageResponse getEmpList(
    @RequestParam("page") int pageNo, @RequestParam("rows") int rowLimit,
    @RequestParam("sidx") String sortCol, @RequestParam("sord") String sortDir)

Как мне изменить его для захвата различных параметров поиска, т. Е. Полей, по которым был произведен поиск, и соответствующих строк поиска

Я использую jqGrid 4.3.1

Ответы [ 2 ]

1 голос
/ 02 апреля 2012

Я даю ответ на поставленный мной вопрос.

Существует два способа захвата параметров фильтра

Если вы установите для параметра stringResult значение true, как в

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: true});

Параметры фильтра передаются в виде строки json в следующем формате

{"groupOp":"AND", // the group operation when you have multiple feilds to search on
"rules":[
    {"field":"countrycode", // the field / columns being searched on
      "op":"bw", // operator for searching, here bw mean beginning with
      "data":"ind”}] // the search string for the above field
}

Тогда мы могли бы решить, как обрабатывать параметры фильтра из приведенной выше строки JSON. Рекомендуется использовать доступные библиотеки JSON, которые могут преобразовывать объекты Java в строки JSON и наоборот.

В таком случае сигнатура метода для обработки будет выглядеть как

@RequestMapping(value= "/cityData", method = RequestMethod.POST)
     public @ResponseBody PageResponse getCityList(@RequestParam("page") int pageNo,
                                                  @RequestParam("rows") int rowLimit,
                                                @RequestParam("sidx") String sortCol,
                                                @RequestParam("sord") String sortDir,
                                                @RequestParam("_search") boolean search,

//captures the filter parameters as a json string                                       
    @RequestParam(value="filters",required=false) String filters)

Параметр _search запускается в истинное значение с помощью панели инструментов фильтра при вводе строки поиска

Другой подход к работе с этими фильтрами состоит в том, чтобы установить для параметра stringResult значение false, как в

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: false});

Если для этой опции задано значение false, то поиск столбца / поля выполняется, и строка поиска передается в виде пар имя-значение

Так что в этом случае мы ищем код страны, и искомая строка - это ind.

Таким образом, сигнатура функции изменится на

 @RequestMapping(value= "/cityData", method = RequestMethod.POST)
     public @ResponseBody PageResponse getCityList(@RequestParam("page") int pageNo,
                                                  @RequestParam("rows") int rowLimit,
                                                @RequestParam("sidx") String sortCol,
                                                @RequestParam("sord") String sortDir,
                                                @RequestParam("_search") boolean search,

    //capturing the search string for the country code column                                           @RequestParam(value="countryCode",required=false) String countryCode,)

Надеюсь, это кому-нибудь поможет !!

0 голосов
/ 26 марта 2012

Я рекомендую вам использовать stringResult: true опция filterToolbar:

jQuery("#grid_id").jqGrid('filterToolbar', {stringResult: true});

В случае, если параметры запроса к серверу будут такими же, как для Диалоговое окно расширенного поиска (опция поиска с multipleSearch: true).

Я не использую Spring 3 MVC, но полагаю, что вам нужно добавить дополнительный параметр @RequestParam(value="filters", required=false) String filters в списокпараметры getEmpList.Значением параметра является строка JSON, которую необходимо дополнительно десериализовать (разобрать) для объекта.(см. здесь для получения дополнительной информации)

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