Poblema con finestra popup modale

martedì 20 ottobre 2009 - 15.50

liuc Profilo | Junior Member

Ciao a tutti, ho un problema nella gestione di una finestra popup modale .
Ho due pagine Default.aspx e ModalPopup.aspx.

Questo è il codice di Default.aspx

<script language="javascript" type="text/javascript">
function OpenModalPopup()

{
var url = "ModalPopup.aspx?dens=diaz&istat=3032";
var parameter = " dialogWidth="
+ Math.floor(screen.availWidth/2) + "px; "
+ " dialogHeight="
+ Math.floor(screen.availHeight/2) + "px; "
+ " center=yes; help=yes; "
+ " status=no; resizeable=no;";

var returnParameter = window.showModalDialog(url, parameter);

alert(returnParameter);

if (returnParameter == true)
{
//some business logic
location.reload();
}
}
</script>

La pagina ha solo un bottone Button1. Nel pageload ho questo codice:
if (!Page.IsPostBack)
{
Button1.Attributes.Add("onclick", "javascript:OpenModalPopup()");
}



Pagina: ModalPopup.aspx

<script language="javascript" type="text/javascript">
function CloseModal(returnParameter)
{
window.returnValue = returnParameter; // the value which is return to the parent page
window.close();
}

</script>

Anche qui ho un bottone e nl pageload ho il seguente codice:
Button1.Attributes.Add("onclick", "javascript:CloseModal(10)");


Quando eseguo il codice questo è quello che succede :
a) Clicco sul bottone di Default.aspx : si apre la finestra di popup ModalPopup.aspx (OK)
b) Clicco sul bottne di ModalPopup.aspx : si apre una seconda finestra di popup (sempre ModalPopup.aspx) e si chide la prima ModalPopup.aspx.

Perchè si apre questa seconda finestra di popup? Perchè ModalPopup.aspx non si chiude quando clicco sul pulsante?

Grazie.

paoval72 Profilo | Senior Member

>Ciao a tutti, ho un problema nella gestione di una finestra
Ciao.
manca solo il classico IF per controllare se è un postback. come hai fatto epr l'altro pulsante:
if (!Page.IsPostBack) { Button1.Attributes.Add("onclick", "javascript:CloseModal(10)"); }

Ciao,
PV

liuc Profilo | Junior Member

Grazie , ma non è quello il problema.
Continua ad aprirmi unaseconda ModalPopup quando clicco sul pulsante.
Ho notato però che la seconda finestra non è modale. E' una webform normale e la querystring è la stessa della chiamata alla finestra modale.

paoval72 Profilo | Senior Member

Puoi postare un po' di codice dell'aspx della pagina principale?

PV

liuc Profilo | Junior Member

E' quello che vedi sopra...comunque lo riscrivo:
**********************************
PAGINA : DEFAULT.ASPX
**********************************
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
<script language="javascript" type="text/javascript">
function OpenModalPopup()

{
var url = "ModalPopup.aspx?dens=diaz&istat=3032";
var parameter = " dialogWidth="
+ Math.floor(screen.availWidth/2) + "px; "
+ " dialogHeight="
+ Math.floor(screen.availHeight/2) + "px; "
+ " center=yes; help=yes; "
+ " status=no; resizeable=no;";

var returnParameter = window.showModalDialog(url, parameter);

alert(returnParameter);

}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>

***********************
DEFAULT.ASPX.CS
***********************

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Button1.Attributes.Add("onclick", "javascript:OpenModalPopup()");
}
}
}

***********************************
PAGINA : MODALPOPUP.ASPX
***********************************

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Pagina senza titolo</title>
<script language="javascript" type="text/javascript">
function CloseModal(returnParameter)
{
window.returnValue = returnParameter; // the value which is return to the parent page
window.close();
}

</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>


**********************************
MODALPOPUP.ASPX.CS
***********************************

public partial class ModalPopup : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
Button1.Attributes.Add("onclick", "javascript:CloseModal(10);");
}
}
}



Quando premo il pulsante in ModalPopup.aspx mi mostr correttamente l'alert con il valore 10 (quindi ritorna al codice della pagina chiamante) ma contemporaneamente mi si riapre la ModalPopup.aspx questa volta come normale paginaweb (non più come finestra modale).

Gluck74 Profilo | Guru

ho capito il problema.
In pratica quando premi il pulsante nella modal.aspx per chiudere la finestra, fai in verità un postBack alla stessa pagina, che quindi si carica al posto della default.

per ovviare a questo correggi così:

function CloseModal(returnParameter) { window.returnValue = returnParameter; // the value which is return to the parent page window.close(); return false; }

Button1.Attributes.Add("onclick", "javascript:return CloseModal(10);");

oppure più semplicemente invece di mettere un asp:button, che non è altro che un submit, metti un semplice bottone html
<button>, che di per se non fa il postBack.

ciao

liuc Profilo | Junior Member

Grazie mille, adesso funziona.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5