/ / Modal Popup Extender fermeture automatique après .Show () - c #, asp.net, ajax, ajaxcontroltoolkit

Fermeture automatique Modal Popup Extender après .Show (): c #, asp.net, ajax, ajaxcontroltoolkit

J'utilise ModalPopupExtender d'AjaxToolkitpour asp.net. J'essaie d'avoir un ModalPopupExtender déclenché avec différents boutons. Le problème est que, sauf si j'utilise le TargetControlID, la fenêtre s'ouvre et se ferme rapidement en moins d'une seconde. J'ai besoin de ce popup pour être accessible par plusieurs boutons différents avec le même panneau étant utilisé à chaque fois.

Le code ci-dessous devrait reproduire le problèmebien, sur mon application réelle cela fonctionne presque bien. Même le contenu est mis à jour avec le panneau choisi de la fenêtre contextuelle, sauf qu'il se ferme au bout d'environ 1/2 seconde lorsque j'appelle .show () à partir de OnClientClick;

<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>

Merci

Réponses:

7 pour la réponse № 1

Vous pouvez utiliser comme ça

OnClientClick = "return Showpopup()"


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

Vous devez utiliser le retour en vous OnClientClick combiner votre code

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

et votre fonction javascript devrait être comme

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

2 pour la réponse № 2

Il est très tard, mais espérons que cela aidera quelqu'un qui cherche la réponse.
Lorsque vous cliquez sur, une publication se produit et la page est rechargée. Si tu utilises updatepanel alors votre message popup restera après le chargement de la page. Voir cet exemple ci-dessous:

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>

Code derrière:

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();
}
}