jqGrid четкие критерии поиска
В настоящее время у меня есть сетка с включенным поиском. Когда я запускаю поиск, все работает нормально, и я могу вернуть хорошие данные обратно в таблицу. Я вижу, что параметр "_search" в URL установлен на "true" и все хорошо.
Тем не менее, когда поиск закончен и данные больше не актуальны, я бы хотел перезагрузить сетку, чтобы отобразить предыдущие данные, которые были там (данные, отображаемые при начальной загрузке страницы). Я сделал функцию для вызова метода "trigger("reloadGrid")", но он просто отправляет те же данные, когда "_search" все еще имеет значение "true".
Есть ли способ очистить данные поискового запроса и просто перезагрузить исходные данные, показанные при загрузке страницы, или хотя бы вернуть значение "_search" в "false", чтобы я мог проверить это? В настоящее время единственный способ отобразить исходные данные - перезагрузить страницу.
2 ответа
Если вы используете поиск jqGrid, будут установлены следующие две вещи
search
Параметр jqGrid будет установлен вtrue
,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}]);
});
Вы можете увидеть все это вживую в следующей демонстрации. В демоверсии сначала нужно нажать кнопку "Поиск" на панели навигации и установить фильтр поиска. Затем вы можете нажать на кнопку "Сбросить поиск" и сбросить ее.
Чтобы очистить окна фильтра (как текст, так и выделение), было следующее дополнение (целая функция):
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:""});
}