JqGrid-如何在jqGridInitGrid事件上为应用程序的每个网格执行自定义功能

JqGrid-如何在jqGridInitGrid事件上为应用程序的每个网格执行自定义功能,jqgrid,Jqgrid,在我们的应用程序中,我们有100多个网格,我们需要在网格标题栏上显示帮助按钮,为此,我使用 $.jgrid.extend({ EnableHelpButton: function(value) { var $t = this; ...............; } }); 目前,我转到grid的每个.html页面,需要调用EnableHelpButton,如下代码所示 -----------------Index1.html---

在我们的应用程序中,我们有100多个网格,我们需要在网格标题栏上显示帮助按钮,为此,我使用

$.jgrid.extend({    
    EnableHelpButton: function(value) {
        var $t = this;
        ...............;
    }
    });
目前,我转到grid的每个.html页面,需要调用EnableHelpButton,如下代码所示

-----------------Index1.html-------------------------

$("#TestGrid1").bind("jqGridInitGrid", function () {
            $(this).EnableHelpButton(true);
        });
$("#TestGrid2").bind("jqGridInitGrid", function () {
            $(this).EnableHelpButton(true);
        });
-----------------Index2.html-------------------------

$("#TestGrid1").bind("jqGridInitGrid", function () {
            $(this).EnableHelpButton(true);
        });
$("#TestGrid2").bind("jqGridInitGrid", function () {
            $(this).EnableHelpButton(true);
        });
如何在每个网格的jqGridInitGrid事件上创建调用此EnableHelpButton的通用方法。它应该在一个地方写一次,并且应该适用于每个网格。

您必须在每个页面上对自定义函数进行特定调用。一种方法是定义你的插件

$.jgrid.extend({
EnableHelpButton:函数(值){
var$t=此;
...............;
},
myInit:函数(){
返回此。每个(函数(){
$(this).bind(“jqGridInitGrid”,函数({
$(此).EnableHelpButton(true);
});
});
}
});
即使在这种情况下,您也需要在每个页面上包含
.jqGrid(“myInit”)
调用。您可以在
转换为网格之前调用
myInit
。例如,代替

$(“#网格”).jqGrid({
…//用于创建jqGrid的参数
});
你现在可以用了

$(“#网格”).jqGrid(“myInit”).jqGrid({
…//用于创建jqGrid的参数
});
只有在任何网格中都不使用
onInitGrid
回调时,才可以使用回调而不是
jqGridInitGrid
。在这种情况下,只需在页面中包含的一些JavaScript代码中定义回调:

$.extend(true,$.jgrid.defaults{
onInitGrid:函数(){
$(此).EnableHelpButton(true);
}
});
通过这种方式,您将为每个网格设置
onInitGrid
的默认实现


因此,
onInitGrid
回调中的公共初始化定义产生了最短的实现,但有一个限制,即您不应该在任何网格中使用回调。或者,您可以定义方法
myInit
,该方法使所有绑定都可以添加
。jqGrid(“myInit”)
在您的每个网格上。最后一种方法将适用于每个jqGrid。

感谢您的Oleg,提供的解决方案工作完美且满足要求。