Ваша основная ошибка - использование параметра postData
в форме:
postData: $("#myForm").serialize()
У этого использования есть две проблемы:
- Значение
$("#myForm").serialize()
перезаписывает все параметры запросов POST вместо добавления дополнительных параметров.
- Значение
$("#myForm").serialize()
будет вычислено только один раз в течение времени инициализации сетки. Таким образом, вы всегда будете отправлять search=""
и maxPrice=""
на сервер.
Я предлагаю вам заменить форму именованными полями редактирования на
<fieldset>
<input type='text' id='search' />
<input type='text' id='maxPrice' />
<button type='button' id='startSearch'>Search</button>
</fieldset>
определить параметр postData
как объект с методами:
postData: {
search: function() { return $("#search").val(); },
maxPrice: function() { return $("#maxPrice").val(); },
},
и добавьте обработчик событий onclick
к кнопке «Поиск» (см. Фрагмент HTML выше)
$("#startSearch").click(function() {
$("#myGrid").trigger("reloadGrid");
});
Более того, вы ничего не пишете о серверной технологии, которую используете. Может потребоваться дополнительная модификация, чтобы иметь возможность считывать параметры на стороне сервера (например, serializeRowData: function (data) {return JSON.stringify(data);}
, см. , и , ). Я также рекомендую прочитать еще один старый ответ: Как фильтровать данные jqGrid, НЕ используя встроенное поле поиска / фильтра .
Некоторые другие небольшие ошибки, такие как '/Products/Search") %>'
вместо '/ Products / Search' или использование устаревшего параметра imgpath
(см. документация ), менее важны. Параметры столбца по умолчанию, такие как align: 'left'
, лучше удалить.
Рассмотрим также использование поиска в сетке. Например расширенный поиск
$("#myGrid").jqGrid('navGrid','#pager',
{add:false,edit:false,del:false,search:true,refresh:true},
{},{},{},{multipleSearch:true});
, а также панель инструментов поиска :
$("#myGrid").jqGrid('filterToolbar',
{stringResult:true,searchOnEnter:true,defaultSearch:"cn"});
вероятно, он может заменить форму поиска, которую вы используете.