2010-10-21 191 views
4

目前我有一个网格设置与搜索启用。当我运行搜索时,一切正常,我可以将良好的数据返回到网格。我看到URL上的“_search”参数设置为“true”,一切正常。jqGrid清除搜索标准

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

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

+0

答案样的取决于你已经实现了什么样的搜索的。工具栏搜索,单个搜索,高级搜索? – Gregg 2010-10-21 16:51:58

回答

15

的jqGrid的
  1. search参数将被设置为true如果您使用的jqGrid搜索以下两件事情将被设置。
  2. postData jqGrid的参数将被修改。 postData参数的值是一个具有一些属性的对象。在single searching的情况下,将设置属性searchFieldsearchStringsearchOper。在advanced searching的情况下,将仅设置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}]); 
}); 

你可以看到所有这些住在the following demo。在演示中,您应该首先单击导航栏的“搜索”按钮并设置搜索过滤器。然后你可以点击“重置搜索”按钮并重置它。

+0

感谢您的好评。如果我的网格设置为使用GET数据而不是POST,这也可以工作吗?我试图用一个新的GET数据替换URL,但我发现它只是发送两次参数。 – ackerchez 2010-10-25 08:26:38

+0

@ackerchez:是的,它适用于HTTP POST和GET。这是'postData'的优点。在GET的情况下,来自'postData'的所有参数将被附加到'url'。如果当前的'url'值包含'?',那么参数将以'?'开头。如果不是的话,那么它将会从&开始追加。所以一切都很简单,并且工作稳定。 OMG! – Oleg 2010-10-25 09:00:02

+0

OMG!奥列格你实施了自己的jqgrid?在每一个帖子找到你!多谢一次。 – Paschalis 2012-08-01 23:44:02

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