2016-12-06 26 views
1

我正在使用版本4.13.1的freejqGrid。我只是添加了過濾器工具欄的代碼,這是工作,除了搜索後搜索參數消失。搜索工作和一切,但我想留在工具欄中的文本,直到清除使用(x)。免費jqGrid搜索參數在filterToolbar中消失

$('#jqGrid_destroyed').jqGrid({ 
    url:'/url.php', 
    height: 'auto', 
    shrinkToFit: true, 
    width: Math.floor($(window).width()*1), 
    datatype: 'json', 
    mtype: 'POST', 
    colNames:[ 
     'Flat ID', 
     'Customer', 
     'Flat #', 
     'MiscCode', 
     'Item Number', 
     'Item Description', 
     'plus', 
     'RevDate', 
     'Created Date', 
     'Plate/Flat in QA', 
     'Computer Files to Waiting Destruct', 
     'Plates/Flat Destroyed', 
     'Date Confimation Sent to Customer' 
    ], 
    colModel:[ 
     {name:'flat_id',hidden:true}, 
     {width:14,name:'Customer'}, 
     {width:10,name:'flat_plate_num'}, 
     {width:13,name:'MiscCode'}, 
     {width:20,name:'item_number'}, 
     {width:45,name:'item_description'}, 
     {width:12,name:'plus'}, 
     {width:16,name:'revdate'}, 
     {width:22,name:'created_date', align: "right", hidden:true}, 
     {width:17,name:'flat_in_qa'}, 
     {width:20,name:'computer_files_to_waiting_destruct'}, 
     {width:25,name:'flat_destroyed'}, 
     {width:20,name:'date_confimation_sent_to_customer', formatter : 'date', formatoptions : {srcformat: "Y-m-d", newformat:"m/d/Y"}} 
    ], 
    sortname: 'date_confimation_sent_to_customer', 
    sortorder: 'desc', 
    viewrecords: true, 
    gridview: true, 
    caption: 'Waiting Destruct', 
    rowNum: 10000, 
    pager:true, 
    searching: { defaultSearch: "cn" } 
}).jqGrid("filterToolbar"); 
+2

除非您手動調用網格刷新,否則不應清除搜索參數。你可以使用靜態數據在小提琴中重現問題嗎? –

+0

是的,頁面上沒有太多的其他代碼,似乎沒有再次重新加載。當然,搜索後需要重新加載才能加載新數據。我想知道是否需要將搜索參數從服務器傳遞迴帶有數據的客戶端? –

+0

我爲你做了小提琴,你的代碼工作正常:http://jsfiddle.net/ejnrtocw/121/。注:我使用jqGrid 4.6.0,你可以嘗試上傳4.13.1 –

回答

2

免費的jqGrid 4.13.1推出新功能 - 基於postData.filters過濾器工具欄上的填充。請參閱README4.13.1。該功能有一些錯誤,存在於您的案例中。這些錯誤在免費jqGrid的更高版本中得到修復。

可以通過使用loadFilterDefaults: false(通過使用.jqGrid("filterToolbar", {loadFilterDefaults: false})或更好,通過將searching: { defaultSearch: "cn" }更改爲searching: { defaultSearch: "cn", loadFilterDefaults: false })來關閉該功能。另一方面,我最好推薦你更新到當前發佈的免費版jqGrid:4.13.5或者使用GitHub的最新源代碼。

搜索選項loadFilterDefaults: false在許多情況下非常實用。例如,可以使用兩個過濾器工具欄和搜索對話框。如果您要在過濾器工具欄中設置一些過濾器,然後打開搜索對話框,則會在對話框中看到當前過濾器。您可以修改它並應用新的過濾器。網格將顯示新過濾器,但舊版本的jqGrid仍然會在過濾器工具欄中顯示舊過濾器。我發佈了the old answer,它顯示瞭如何根據當前使用的過濾器填充過濾器工具欄。如果使用filterToolbar的默認loadFilterDefaults: true選項,新版本的免費jqGrid將自動刷新過濾器工具欄

還有其他常見的情況,其中loadFilterDefaults: true會有幫助。例如,可以使用loadonce: true選項從服務器加載所有JSON數據。免費的jqGrid允許loadonce: true選項與forceClientSorting: true,適用當地數據將在網格中顯示之前排序過濾結合起來。它允許加載的所有數據,但只顯示過濾和排序的數據,並在本地分頁數據。要過濾數據,只需設置filters屬性postData。通過使用filterToolbar和默認loadFilterDefaults: true選項,您將看到當前應用的過濾器,這可能對用戶有所幫助。

+0

更新到新版本允許在沒有'loadFilterDefaults:false'選項的情況下工作。 –

+0

@jeffery_the_wind:這就是我的意思。新的默認選項「loadFilterDefaults:true」很好,但4.13.1中引入的第一個實現包含一些錯誤。這些錯誤在更高版本中得到修復。因此我建議更新到4.13.5版本。只有當您現在不能將網站更新到最新的免費jwGrid時,才應該使用'loadFilterDefaults:false'的解決方法。 – Oleg

+0

對,我明白。我只是在評論,所以讀者都知道這兩種方式都行得通。你用這個軟件包的分支真的做得很好。 –