【问题标题】:Modal Popup on Dynamic Button动态按钮上的模态弹出窗口
【发布时间】:2013-07-19 15:43:51
【问题描述】:

在我的 Web 应用程序中,我动态添加了一个名为“Click Me !”的按钮。在第一阶段,当按钮被点击时,它必须显示一个警告框。在第 2 阶段,它必须显示一个弹出窗口。 我使用 ModalPopupExtender 来实现弹出。问题是,弹出窗口只闪烁一次,而不是不断显示。下面给出了我的代码......任何人都可以帮助我摆脱这个吗?

Page_OnLoad():
**************
     Button Button1=new Button();
     Button1.Text="Click Me !";
     Button1.ID="LogBut";
     Controls.Add(LogBut);

第一阶段:

      JavaScript:
      ***********
          function alert()
          {
             alert("Stage 1");
          }

      Code behind:
      ************
       LogBut.Attributes.Add("OnClick", "alert();");

第 2 阶段:

      JavaScript:
      ***********
          var Modalpopup='<%=modalPermission.ClientID %>';
          function Popup()
          {
             $find(Modalpopup).show();
          }

     Design:
     *******
           <Ajax:ModalPopupExtender ID="modalPermission" runat="server" TargetControlID="Infield"
                   PopupControlID="divPermission"></Ajax:ModalPopupExtender>
           <asp:HiddenField ID="Infield" runat="server" />

     Code Behind:
     ************
           LogBut.Attributes.Add("OnClick", "Popup();");

注意:我使用隐藏字段控件的 ID 作为 ModaPopupExtender 的 TargetControlId。正在日历控件中添加此按钮。

日历截图:

【问题讨论】:

    标签: asp.net modalpopupextender dynamic-controls


    【解决方案1】:

    模态弹出窗口不记得它应该在弹出窗口后显示。如果要将弹出显示附加到按钮,则必须禁用回发到服务器。您的问题很可能是按钮显示模态,但也回发,并且在回发时,模态不记得它应该显示。您可以通过执行以下操作来终止回发;设置

    UseSubmitBehavior='false'
    

    在服务器端按钮上,然后在弹出功能中,执行:

    function Popup(e) {
       // stop button event propagation, which causes postback
       if (e.stopPropagation)
          e.stopPropagation();
       if (e.preventDefault)
          e.preventDefault();
    
       // show modal
    }
    

    这应该可以防止按钮回发到服务器。

    编辑:您的函数说 Popup,但您的 javascript 将 showpopup() 呈现为函数调用。如果该函数不存在(并且拼写完全相同),它将永远不会停止回发。

    【讨论】:

    • 它对我有用。但问题是当我在日历控件中添加该按钮时,它不起作用。
    • 对不起@Brian Mains,而不是编辑我的帖子。我编辑了你的评论。真的很抱歉。
    • 没问题。我修好了它。还编辑了我的帖子...服务器上的方法是showpopup(),您的代码示例有Popup()。它们必须具有相同的名称。
    • 只需在服务器端将 OnClick 属性的函数名称更改为 Popup()。
    • 是的...函数名称更改为 showpopup(),在后面的代码中。但问题依然存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多