【问题标题】:jqGrid warning dialogjqGrid 警告对话框
【发布时间】:2012-08-14 20:07:11
【问题描述】:

我在 jqGrid 上有一些自定义工具栏按钮。其中一个取决于选择的行,就像内置的编辑和删除按钮一样。当用户在没有选择行的情况下单击它时,我希望向用户显示与内置编辑或删除按钮相同的警告对话框。也就是说,我想重用网格使用的对话框:

警告 请选择行

知道网格从哪里显示警报吗?

谢谢, 斯科特

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    我认为代码可能如下所示

    var alertIDs = {themodal: 'alertmod', modalhead: 'alerthd', modalcontent: 'alertcnt'};
    
    $.jgrid.viewModal("#" + alertIDs.themodal,
        {gbox: "#gbox_" + $.jgrid.jqID(this.p.id), jqm: true});
    $("#jqg_alrt").focus();
    

    其中this.p.id(或$.jgrid.jqID(this.p.id))可以替换为网格的id。为了更确定警报工作,我建议您使用更长的代码

    var alertIDs = {themodal:'alertmod',modalhead:'alerthd',modalcontent:'alertcnt'};
    if ($("#"+alertIDs.themodal).html() === null) {
        $.jgrid.createModal(alertIDs,"<div>"+$.jgrid.nav.alerttext+
            "</div><span tabindex='0'><span tabindex='-1' id='jqg_alrt'></span></span>",
            {gbox:"#gbox_"+$.jgrid.jqID(this.p.id),jqModal:true,drag:true,resize:true,
            caption:$.jgrid.nav.alertcap,
            top:100,left:100,width:200,height: 'auto',closeOnEscape:true,
            zIndex: null},"","",true);
    }
    $.jgrid.viewModal("#"+alertIDs.themodal,
        {gbox:"#gbox_"+$.jgrid.jqID(this.p.id),jqm:true});
    $("#jqg_alrt").focus();
    

    The demo 演示代码。它显示消息

    每次点击"Click me!"按钮时。

    更新: The answer 包含如何使用free jqGrid 中的上述对话框的信息。它描述了许多选项。最简单的版本只包含一个简单的调用this.modalAlert();。它显示相同的警报对话框,free jqGrid 在内部显示。

    【讨论】:

    • 效果很好。谢谢。现在来弄清楚你是怎么想出来的;)
    • 哇,这工作正常。但我想对此做一点改变。我想更改消息框的文本和标题以在不同的实例中显示不同的消息。如何做到这一点??
    • @Amit:在演示中明确使用$.jgrid.nav.alerttext 作为消息文本,$.jgrid.nav.alertcap 作为标题。您可以直接将$.jgrid.nav.alerttext$.jgrid.nav.alertcap替换为其他文本或使用$.expend($.jgrid.nav, {alerttext: "new text", alertcap: "new title"});更改默认警报消息的文本。
    • 嗨,我已经尝试了很多,但仍然没有得到任何东西。请帮忙。 $.extend($.jgrid.nav, { alerttext: message, alertcap: header }); $.jgrid.createModal(alertIDs, "
      " + $.jgrid.nav.alerttext + "
      ",{gbox: "#gbox_tblDeltaDPSStatusEvaluation",jqModal: true,drag: true,resize: true,caption: $.jgrid.nav.alertcap,top: 100,left: 100,width: 200 ,height: 'auto',closeOnEscape: true},"","",true);$.jgrid.viewModal("#" + alertIDs.themodal, { gbox: "#gbox_" + $.jgrid.jqID(" #tblDeltaDPSStatusEvaluation"), jqm: true });$("#jqg_alrt").focus();
    • @Amit:对不起,我不明白你的目标。你试图做什么?像tblDeltaDPSStatusEvaluation 这样的id 应该对应&lt;table&gt;id。此外,$.jgrid.jqID("#tblDeltaDPSStatusEvaluation") 部分代码肯定是错误的。您应该删除 # 或仅将所有内容替换为 "tblDeltaDPSStatusEvaluation"
    【解决方案2】:

    我刚刚尝试了 Oleg 的以下解决方案,但它不适合我。
    进行一些调试后,我意识到 $("#"+alertIDs.themodal).html() 对我来说是“未定义的”,因此 Oleg 提出的 if 案例无法正常工作。

    我改变了这个:

    if ($("#"+alertIDs.themodal).html() === null) {
    

    进入这个:

    if ($("#"+alertIDs.themodal).html() === null || $("#"+alertIDs.themodal).html() === undefined) {
    

    现在工作正常。

    【讨论】:

      【解决方案3】:
      $.jgrid.info_dialog.call(this,
          "Warning",              // dialog title
          "Please, select row!"  // text inside of dialog
      );
      

      对我来说效果很好!

      【讨论】:

      • 他要求使用相同的警报,这意味着与 JQGrid 默认的本地化消息相同。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多