2013-05-13 82 views
2

我正在使用jqGrid,到目前爲止,一切工作都很好。但現在我正在努力讓用戶能夠保存他們的搜索,以便他們可以稍後檢索和/或將它們應用到不同的網格。節省實際上證明是容易的部分。我可以根據指定的postData過濾器獲取網格以進行過濾,但搜索對話框不會使用過濾條件進行刷新。這裏有一個小測試,我有:如何使用postData過濾器刷新jqGrid搜索對話框

$("#grid").jqGrid('navGrid','#pager', {edit: false, add: false, del: false, refresh: false, searchtext: 'Search'}, {}, {}, {}, 
{ 
    multipleSearch: true, 
    closeAfterSearch: true, 
    closeOnEscape: true, 
    searchOnEnter: true, 
    Find: "Search", 
    afterShowSearch: function() 
    { 
     ...// code to create the save search buttons goes here 

     $("#fbox_" + gridID + "_save").bind('click', function() 
     {      
      var filters = {"groupOp":"AND","rules":[{"field":"id","op":"eq","data":"2"}]}; 
      $('#grid').jqGrid('setGridParam', 
      { 
       postData: {'filters': filters}, search: true}).trigger('reloadGrid'); 
      } 
    } 
}); 

我已經嘗試了幾件事情,但似乎沒有得到高級搜索對話框更新。

作爲一個方面說明......我沒有重新創建過濾器設置爲true。看起來有一個地方的錯誤...與重新創建過濾器設置爲true,當您應用搜索,關閉對話框,重新打開搜索對話框,點擊「重置」,關閉對話框,然後回去,沒有可用選項。我得到的是「分組」選項(AND/OR)。我在Oleg的一些演示上測試了這個,結果是一樣的,所以它不僅僅是我的代碼。

回答

1

設置recreateFilter:true解決了顯示問題。但是,在點擊「重置」按鈕,關閉搜索對話框,然後返回到搜索對話框後,您仍然遇到問題,您只能看到組操作員下拉(「AND/OR」)和'+'按鈕旁邊。我可以通過觸發'+'按鈕上的點擊事件來解決這個問題

var tableRows = $('#fbox_grid > table').find('tr'); 

if (tableRows.length == 2) 
{ 
    $('input[type="button"]').trigger('click'); 
} 

現在一切正常。