【问题标题】:Modal Popup Extender auto closing after .Show().Show() 后模态弹出扩展器自动关闭
【发布时间】:2013-02-16 21:36:54
【问题描述】:

我正在使用来自 AjaxToolkit 的 ModalPopupExtender 用于 asp.net。我正在尝试使用不同的按钮触发 ModalPopupExtender。问题是,除非我使用 TargetControlID,否则弹出窗口会在一秒钟内打开并快速关闭。我需要这个弹出窗口可以访问 通过几个不同的按钮,每次都使用同一个面板。

下面的代码应该很好地复制了这个问题,在我的实际应用程序中它几乎可以正常工作。甚至内容正在使用弹出窗口的选定面板进行更新,但当我从 OnClientClick 调用 .show() 时它会在大约 1/2 秒后关闭;

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript">
    //Function to Hide ModalPopUp
    function Hidepopup() {
        $find('AjaxPopupHi').hide();
    }
    //Function to Show ModalPopUp
    function Showpopup() {
        $find('AjaxPopupHi').show();
    }

</script>

</head>

<form id="form1" runat="server">

<asp:LinkButton ID="lnk" OnClientClick = "Showpopup()" runat="server" Text="hi"></asp:LinkButton>


<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<br />

<asp:Button ID="Button_dummy" Style="display: none" runat="server" Text="Button" />

<ajaxToolKit:ModalPopupExtender ID="mpe" runat="server" BehaviorID="AjaxPopupHi" TargetControlID="Button_dummy" PopupControlID="pnl"
    CancelControlID="close" />

<!--BELOW panel does not remain OPEN :/-->
<asp:Panel ID="pnl" runat="server" CssClass="popupPanel">
    <div>
        Hi!!!
    </div>
    <asp:Button ID="close" runat="server" Text="Close" />
</asp:Panel>


 </form>

谢谢

【问题讨论】:

    标签: c# asp.net ajax ajaxcontroltoolkit


    【解决方案1】:

    你可以这样使用

    OnClientClick = "return Showpopup()"
    
    
    function Showpopup() {
        $find('AjaxPopupHi').show();
        return false;
    }
    

    您必须在 OnClientClick 中使用 return 来结合您的代码

    <asp:LinkButton ID="lnk" OnClientClick = "return Showpopup()" runat="server" Text="hi">  
    </asp:LinkButton>
    

    你的javascript函数应该是这样的

    function Showpopup() {
        $find('AjaxPopupHi').show();
        return false;
    }
    

    【讨论】:

      【解决方案2】:

      已经很晚了,但希望这对正在寻找答案的人有所帮助。
      当您单击时,会发生回发并重新加载页面。如果您使用updatepanel,那么您的弹出消息将在页面加载后保留。请参阅下面的示例:

      aspx:

      <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>
      
      <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Popup.aspx.cs" Inherits="Popup_example_Popup" %>
      
      <!DOCTYPE html>
      
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head runat="server">
          <title></title>
          <script type="text/javascript">
      
              //Function to Hide ModalPopUp
              function Hidepopup() {
                  $find('AjaxPopupHi').hide();
              }
              //Function to Show ModalPopUp
              function Showpopup() {
                  $find('AjaxPopupHi').show();
              }
      
          </script>
      </head>
      <body>
          <form id="form1" runat="server">
              <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
      
              <asp:UpdatePanel ID="udpOutterUpdatePanel" runat="server">
                  <ContentTemplate>
      
                      <asp:LinkButton ID="lnk" OnClientClick="Showpopup()" runat="server" Text="hi"></asp:LinkButton>
      
                  </ContentTemplate>
              </asp:UpdatePanel>
      
              <br />
      
              <asp:Button ID="Button_dummy" Style="display: none" runat="server" Text="Button" />
              <ajaxToolkit:ModalPopupExtender ID="mpe" runat="server" BehaviorID="AjaxPopupHi" TargetControlID="Button_dummy" PopupControlID="pnl"
                  CancelControlID="close" />
      
              <asp:Panel ID="pnl" runat="server" CssClass="popupPanel">
                  <div>
                      Hi!!!
                  </div>
      
                  <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                      <ContentTemplate>
      
                          <asp:Button ID="close" runat="server" Text="Close" OnClick="close_Click" />
      
                      </ContentTemplate>
                  </asp:UpdatePanel>
              </asp:Panel>
      
      
          </form>
      </body>
      </html>
      

      背后的代码:

      using System;
      
      public partial class Popup_example_Popup : System.Web.UI.Page
      {
          protected void Page_Load(object sender, EventArgs e)
          {
      
          }
          protected void close_Click(object sender, EventArgs e)
          {
              mpe.Hide();
          }
      }
      

      【讨论】:

      • 花了好几个小时试图让一个带有
      猜你喜欢
      • 2011-01-31
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多