免费的 jqGrid - 未调用 filterToolbar 上的回调函数

Free jqGrid - callback functions on filterToolbar are not being called

示例位于 jFiddle(查找文本 "Example for Filter with callback function")

这种减速似乎对 beforeClear 和 beforeSearch 没有影响:

$(nameOfGrid).jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, searchOperators: true, defaultSearch : "cn",beforeClear: function() {alert(1)}, beforeSearch: function() {alert(1);}});

我放置 "alert(1)" 只是为了看看是否有东西弹出,但它似乎并没有在我过滤或清洁过滤器时被触发。

我从 4.9.0 开始就看到了这个,但也是最新的,如示例所示。

感谢您的帮助,

谢谢,

总计

问题原因:filterToolbarmore as once的用法:

$('#jqGrid').jqGrid('filterToolbar', {stringResult: true});
$('#jqGrid').jqGrid('navGrid',{...});
$('#jqGrid').jqGrid('filterToolbar', {stringResult: true, searchOnEnter: true, searchOperators: true, defaultSearch : "cn",beforeClear: function() {alert(1)}, beforeSearch: function() {alert(1);}});

如果只是评论 filterToolbar 的第一个调用,那么将获得工作演示:http://jsfiddle.net/OlegKi/13582dh7/4/

如果您确实需要重新创建过滤器,那么您应该先调用 destroyFilterToolbar,然后再调用 filterToolbar

我还建议您清理代码,使其更短、更易读。例如,您可以删除不需要的 <div id="jqGridPager"></div>,将 pager: "#jqGridPager" 替换为 pager: true,并从 navGridnavButtonAdd 的所有调用中删除 "#jqGridPager" 参数。

你应该考虑在jqGrid的searching参数中移动navGridfilterToolbar的搜索选项。

更重要的是从 colModel 中删除所有隐藏列,您不打算显示用户并改用 additionalPropertries。强烈建议在 colModel.

中使用列模板

在减少代码并使其更具可读性之后,将永远不会花时间在诸如使用不同参数调用 filterToolbar 两次这样的问题上。