目前,我已启用网格设置并启用了搜索功能。当我运行搜索时,一切正常,我可以将好数据返回到网格。我看到URL上的“_search”参数设置为“true”,一切都很好。
然而,当完成搜索并且数据不再相关时,我想重新加载网格以显示那里的先前数据(初始页面加载上显示的数据)。我做了一个函数来调用“trigger(”reloadGrid“)”方法,但是只发送相同的数据,而“_search”仍设置为“true”。
有没有办法清除搜索请求数据,只是重新加载页面加载中显示的初始数据,或者至少将“_search”值设置回“false”,以便我可以检查它?目前显示原始数据的唯一方法是重新加载页面。
答案 0 :(得分:15)
如果使用jqGrid搜索,将设置以下两项内容
search
参数将设置为true
。postData
jqGrid的参数。 postData
参数的值是具有某些属性的对象。如果是single searching,则会设置属性searchField
,searchString
和searchOper
。如果是advanced searching,则只会设置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}]);
});
您可以在the following demo中看到所有这些内容。在演示中,您应首先单击导航栏的“搜索”按钮并设置搜索过滤器。然后,您可以单击“重置搜索”按钮并重置它。
答案 1 :(得分:2)
清理过滤器窗口(文本和选择)有以下添加(整个功能):
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:""});
}