2010-10-21 73 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:""}); 
}