jqGrid清除搜索条件

目前我已启用网格设置并启用搜索。 当我运行搜索时,一切正常,我可以将好的数据返回到网格。 我看到URL上的“_search”参数设置为“true”,一切都很好。

但是,当完成搜索并且数据不再相关时,我想重新加载网格以显示那里的先前数据(初始页面加载上显示的数据)。 我做了一个函数来调用“trigger(”reloadGrid“)”方法,但是只发送相同的数据,而“_search”仍设置为“true”。

有没有办法清除搜索请求数据,只是重新加载页面加载上显示的初始数据或至少将“_search”值设置回“false”,以便我可以检查它? 目前显示原始数据的唯一方法是重新加载页面。

如果使用jqGrid搜索,将设置以下两项内容

  1. jqGrid的search参数将设置为true
  2. 将修改postData参数。 postData参数的值是具有某些属性的对象。 如果单个搜索属性searchField ,将设置searchStringsearchOper 。 在高级搜索的情况下,将仅设置postData参数的属性filters 。 (属性_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}]); }); 

您可以在以下演示中看到所有这些。 在演示中,您应首先单击导航栏的“搜索”按钮并设置搜索filter。 然后,您可以单击“重置搜索”按钮并重置它。

清理filter窗口(文本和选择)有以下添加(整个function):

 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:""}); }