禁用jqgrid中的模态弹出窗口

3

我想在jqgrid中创建一个自定义消息,而不使用模态弹出窗口。有没有办法禁用它?或者有没有办法更改模态框的内容?

5个回答

2

你能更具体一些吗?如果你想要自己的模态对话框,你可以添加一个事件处理程序(例如在编辑按钮上),当其被触发时,就会打开你自己的自定义对话框。你可以使用 jQuery UI 对话框来实现此目的,并将其打开到你自己的自定义表单。

更新 检查了 jqGrid 源代码后,info_dialog 是用于显示这个特定对话框的函数。还有一个单独的调用来显示“正在加载…”弹出窗口。目前看来,似乎没有简单的方法来禁用 info_dialog。但是,你可以修改 jqGrid 源代码来实现你需要的功能。你可以选择:

  • 立即从 info_dialog 返回 - 这可能是极端的,因为它可能报告其他你需要的错误 - 或者,

  • 找到并注释掉显示此特定 ajax 错误的调用。这需要一些试错,但由于此函数仅被调用 18 次,因此你不需要花费太多时间来追踪。事实上,首先注释掉这个实例,因为它是从一个 ajax 调用的 error 函数中调用的:

    info_dialog(a.jgrid.errors.errcap,e.status+" : "+e.statusText+"<br/>"+u,a.jgrid.edit.bClose);

显然,这样的修改是最后的手段,但一旦它起作用,你可以考虑为 jqGrid 团队制作一个补丁来禁用警报。


jqGrid使用默认弹出窗口进行警告,我想要移除它。 - yretuta
你是指那个例如显示“加载中”的吗? - Justin Ethier
是的。以及每当服务器请求失败时出现的错误消息(我成功地捕获了ajaxError事件并设置了自定义消息,但模态对话框也会出现,其中显示错误:500和相应的消息。 - yretuta

0

我已经在运行时更改了模态弹出窗口的z-index,一旦您可以访问它,您可以进行任何自定义。

editoptions: { size: 20, maxlength: 10,

                            dataEvents: [
                          { type: 'keypress',
                              fn: function (e) {
                                  if (e.keyCode == 13) {
                                      **$("#info_dialog").css('z-index', '100000');**
                                  }
                              }
                          }
                       ]


                        } }

另外,如果您可以在其他地方执行它,例如在服务器响应错误时

onCellSelect: function (rowid, iCol, aData) {
                    currentRow = rowid;
                    if (rowid && rowid !== lastsel) {
                        if (lastsel) jQuery('#ppGrid').jqGrid('restoreRow', lastsel);
                        $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError);
                        lastsel = rowid;
                    }
                    else if (rowid && rowid === lastsel)
                    { $("#ppGrid").jqGrid('editRow', rowid, true, null, null, null, {}, reload,OnError); }


                }

0

是的,你可以做到。你可以将模态框的可见属性设置为false [$("#info_dialog").visible(false);],然后你可以调用任何你自定义的模态框。

editrules: { custom: true, custom_func: validate_edit }


function validate_edit(posdata, colName) {
            var message = "";
            if (posdata != '' && $.isNumeric(posdata))
                return [true, ""];

            if (posdata == '')
                message = colName + " field is required"
            if (!$.isNumeric(posdata))
                message = posdata + " is not a number";

            alert(message);

            $("#info_dialog").visible(false);

            return [false, ""];
        }

0
在CSS文件的某个地方搜索div.loadingui div.msgbox { ... }。我认为编辑这个CSS类可以完成任务。

0

很好的网格,但是你是在建议他因为无法显示自定义消息框而从头开始吗? - Justin Ethier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接