对于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 +)中实现这一目标?
答案 0 :(得分:2)
免费jqGrid 4.13.0实现了新功能:如果真正应用了过滤器(postData.filters
选项在jqGrid中设置),则根据当前搜索过滤器search:true
填充过滤器工具栏。如果您不想使用此功能,可以使用loadFilterDefaults: true
的{{1}}选项。
该功能在某些测试用例中有一些小错误,但版本4.13.2应该解决所有问题。
免费的jqGrid支持filterToolbar
事件,可以触发该事件以强制重新加载过滤器(无需重新加载网格)。在重新加载网格时,将重新加载过滤器。
因此,如果您更改了jqGridRefreshFilterValues
或postData.filters
个选项,并且您希望立即应用更改,则只需触发search
事件:
jqGridRefreshFilterValues
如果在触发事件之前设置了例如$("#grid").triggerHandler("jqGridRefreshFilterValues");
,则将清除过滤器工具栏的所有字段:
search: false
如果您想清除过滤器并重新加载网格,则可以改用旧的jqGrid方法var $grid = $("#grid");
$grid.jqGrid("getGridParam").search = false;
$grid.triggerHandler("jqGridRefreshFilterValues");
(参见the old documentation):
clearToolbar
答案 1 :(得分:0)
我刚刚发现:
$("#grid").setGridParam({ postData: { filters: {}} }).trigger("reloadGrid");
似乎完美无缺。