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

JqGrid - How to execute custom functionality for each grid of application on jqGridInitGrid event

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

创建了一个插件
$.jgrid.extend({    
    EnableHelpButton: function(value) {
        var $t = this;
        ...............;
    }
    });

目前,我转到每个 .html 网格页面,需要调用 EnableHelpButton,如下面的代码所示。

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

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

----------------Index2.html-------------------- --

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

我如何创建一种通用方法来在每个网格的 jqGridInitGrid 事件上调用此 EnableHelpButton。它应该在一个地方写一次,它应该适用于每个网格。

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

$.jgrid.extend({    
    EnableHelpButton: function(value) {
        var $t = this;
        ...............;
    },
    myInit: function () {
        return this.each(function () {
            $(this).bind("jqGridInitGrid", function ({
                $(this).EnableHelpButton(true);
            });
        });
    }
});

即使您需要在每个 页面上包含.jqGrid("myInit") 调用。您可以在 myInit 之前调用 <table> 转换为网格。例如代替

$("#grid").jqGrid({
    ... // parameter used to create jqGrid
});

你现在就要用到

$("#grid").jqGrid("myInit").jqGrid({
    ... // parameter used to create jqGrid
});

只有当您从不在您的任何网格中使用onInitGrid回调时,您才可以使用回调而不是jqGridInitGrid.如果您只需要在每个页面中包含的一些 JavaScript 代码中定义回调:

$.extend(true, $.jgrid.defaults, {
    onInitGrid: function () {
        $(this).EnableHelpButton(true);
    }
});

在这种情况下,您将为每个网格设置 onInitGrid 的默认实现。

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