在jqgrid中禁用模式弹出窗口

时间:2010-01-22 06:30:49

标签: javascript jquery jqgrid modal-dialog

我想在不使用jqgrid中的模式弹出窗口的情况下创建自定义消息。有没有办法禁用它?或者有没有办法改变模态的内容?

5 个答案:

答案 0 :(得分:2)

你能更具体一点吗?如果你想要你自己的模态对话框,你可以添加一个事件处理程序(例如,在一个Edit按钮上),当被触发时会打开你自己的自定义对话框。您可以将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团队滚动补丁以禁用警报。

答案 1 :(得分:0)

在css文件中的某处搜索 div.loadingui div.msgbox {...} 。我认为编辑这个css类可以完成工作。

答案 2 :(得分:0)

我知道这不属于主题,但您是否尝试过SlickGrid http://wiki.github.com/mleibman/SlickGrid/examples

答案 3 :(得分: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); }


                }

答案 4 :(得分: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, ""];
        }