如何在较新版本的 free-jqgrid 中重置搜索工具栏和搜索过滤器?
how to reset the search toolbar and search filters in newer versions of 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+) 中是否有更好的方法来实现此目的?
我刚刚发现:
$("#grid").setGridParam({ postData: { filters: {}} }).trigger("reloadGrid");
看起来很完美。
免费 jqGrid 4.13.0 实现了新功能:根据当前搜索的过滤器填充过滤器工具栏 postData.filters
以防真正应用过滤器(search:true
选项在 jqGrid 中设置)。如果您不想拥有该功能,可以使用 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();
对于 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+) 中是否有更好的方法来实现此目的?
我刚刚发现:
$("#grid").setGridParam({ postData: { filters: {}} }).trigger("reloadGrid");
看起来很完美。
免费 jqGrid 4.13.0 实现了新功能:根据当前搜索的过滤器填充过滤器工具栏 postData.filters
以防真正应用过滤器(search:true
选项在 jqGrid 中设置)。如果您不想拥有该功能,可以使用 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();