【问题标题】:jqGrid.info_dialog is not a function, do I have to call extend?jqGrid.info_dialog 不是函数,我必须调用扩展吗?
【发布时间】:2017-08-20 17:37:12
【问题描述】:

我尝试在我的 jqGrid 上使用 info_dialog,但在控制台中看到 TypeError: $(...).jqGrid.info_dialog is not a function

我 (!) 没有定义我自己的 info_dialog 函数。但我可以在$.extend($.jgrid, ... 中看到它,比如here,所以我期待它默认可用。

info_dialog : function(caption, content,c_b, modalopt) {
        var mopt = {
            width:290,
            height:'auto',

我是否必须为网格启用它?或者我还需要做什么才能使用定义的版本here(在我的网格上调用extend?..)

使用来自https://cdnjs.com/libraries/jqgrid的4.6.0
现在使用https://cdnjs.com/libraries/free-jqgrid 4.14.1

【问题讨论】:

  • 您使用(可以使用)哪个版本的 jqGrid 以及来自哪个 jqGrid 分支(free jqGrid、商业Guriddo jqGrid JS 或版本 如何在代码中调用info_dialog 也很重要。根据您使用的 jqGrid 版本,您可以像 $.jgrid.info_dialog.call($("#grid")[0],...) 一样正确初始化 this

标签: javascript jquery jqgrid


【解决方案1】:

jqGrid 不仅定义了“标准”方法,可以用作$("#grid").jqGrid("methodName", ...)$("#grid").methodName(...),还定义了一些其他方法。 “标准”方法将在$.fn.jqGrid.methodName 下注册(例如$.fn.jqGrid.editGridRow 函数),如果在$.jgrid.no_legacy_api = true; 之前没有指定$.jgrid.no_legacy_api = true;,那么也在$.fn.methodName 下。

换句话说,只存在全局对象$.fn.jqGrid$.fn,其中包含“标准”jqGrid 方法。

其他一些方法列表将在$.jgrid 下注册,而不是$.fn.jqGrid$.fninfo_dialog 就是这种方法的一个例子。因此,应该使用$.jgrid.info_dialog$.jgrid.jqID$.jgrid.htmlEncode$.jgrid.randId 等来使用这些方法。大多数方法不需要初始化this(如$.jgrid.randId()$.jgrid.jqID("some.text")),但有些方法需要将this初始化为网格的DOM(空的<table>用于生成网格)。

例如,你可以使用

$grid.jqGrid("navButtonAdd", "#pager", {
    caption: "Test",
    onClickButton: function () {
        $.jgrid.info_dialog.call(this,
            "Warning with two buttons",
            "Click the `test` button",
            "Close",
            {
                buttons: [
                    {
                        text: "\"text\" button",
                        id: "buttid",
                        onClick: function() {
                            alert("click...");
                        }
                    }
                ]
            }
        );
    }
});

https://jsfiddle.net/OlegKi/xLrbdspo/。我在我开发的演示 free jqGrid fork 中使用,但同样适用于您使用的 jqGrid 的复古版本 4.6。

最后的话。如果你知道 TypeScript 的语法,你可以在free-jqgrid.d.ts 中找到很多问题的答案,比如info_dialog 的用法。 $.jgrid 的方法和属性在here 中描述(包括info_dialog)。你会发现here另外一些方法$.fmatter$.jqm$.jqDnR$.unformat是jqGrid的一部分,就像$.jgrid一样。

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2022-08-15
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2010-09-29
    相关资源
    最近更新 更多