2016-04-22 104 views
1

舊版本的free-jqgrid我用一個函數來重置搜索工具欄和過濾器:如何在更新版本的free-jqgrid中重置搜索工具欄和搜索過濾器?

function resetSearchToolbar() 
{ 
    var col_arr = $("#grid").jqGrid("getGridParam", "colModel"); 
    var toolbar_selector; 

    for(var i = 0, max = col_arr.length; i < max; i++) 
    { 
     if(col_arr[i].search && $("#gs_" + col_arr[i].name).val().length) 
     { 
      toolbar_selector = $("#gs_" + col_arr[i].name) 
      toolbar_selector.val(""); 
     } 
    } 

    // trigger toolbar searching with key-event: 
    if(typeof toolbar_selector !== "undefined") 
     toolbar_selector.trigger("keydown"); 
} 

,這是一種非常糟糕的黑客攻擊 - 但它爲我工作。

有沒有更好的方式來實現這個更新版本的free-jqgrid(4.13+)?

回答

2

免費jqGrid 4.13.0實現了新功能:在真正應用過濾器的情況下(search:true選項在jqGrid中設置),基於當前搜索過濾器填充過濾器工具欄postData.filters。如果您不想使用filterToolbarloadFilterDefaults: true選項的功能。

該功能在某些測試用例中有一些小錯誤,但版本4.13.2應該修復了所有問題。

免費jqGrid支持jqGridRefreshFilterValues事件,可觸發該事件強制重新加載過濾器(無需重新加載網格)。重新加載網格時,過濾器將重新加載原因。

因此,如果你改變了postData.filterssearch選項,並且希望所做的更改將立即應用,那麼你只需要觸發jqGridRefreshFilterValues事件:

$("#grid").triggerHandler("jqGridRefreshFilterValues"); 

如果觸發事件,那麼所有之前例如search: false設置過濾器工具欄的領域將被清除:

var $grid = $("#grid"); 
$grid.jqGrid("getGridParam").search = false; 
$grid.triggerHandler("jqGridRefreshFilterValues"); 

如果你想清除篩選並重新加載電網那麼你可以用舊的jqGrid方法clearToolbar來代替(見the old documentation):

$("#grid")[0].clearToolbar(); 
0

我剛剛發現:

$("#grid").setGridParam({ postData: { filters: {}} }).trigger("reloadGrid"); 

似乎完美地工作了。