2016-04-22 105 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"); 

似乎完美地工作了。