如何在更新版本的free-jqgrid中重置搜索工具栏和搜索过滤器?
问题描述:
旧版本的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+)?
答
免费jqGrid 4.13.0实现了新功能:在真正应用过滤器的情况下(search:true
选项在jqGrid中设置),基于当前搜索过滤器填充过滤器工具栏postData.filters
。如果您不想使用filterToolbar
的loadFilterDefaults: true
选项的功能。
该功能在某些测试用例中有一些小错误,但版本4.13.2应该修复了所有问题。
免费jqGrid支持jqGridRefreshFilterValues
事件,可触发该事件强制重新加载过滤器(无需重新加载网格)。重新加载网格时,过滤器将重新加载原因。
因此,如果你改变了postData.filters
或search
选项,并且希望所做的更改将立即应用,那么你只需要触发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();
答
我刚刚发现:
$("#grid").setGridParam({ postData: { filters: {}} }).trigger("reloadGrid");
似乎完美地工作了。