2.190 messaggi dal 04 marzo 2004
Contributi | Blog
Se usi showModalDialog devi utilizzare dialogArguments:
var opener = window.dialogArguments;

Alessio Leoncini (WinRTItalia.com)
.NET Developer, Interactive Designer, UX Specialist, Trainer
Ciao.. intanto un warning: occhio ad usare ShowModalDialog che funziona solo su IE.

Ciò premesso, una caratteristica interessante è che esso blocca l'esecuzione del javascript sul chiamante finché non è stata chiusa la finestra modale, che tra l'altro, può restituire un risultato. Quindi IMHO il modo più semplice per procedere è:

sul chiamante
var retVal = window.showModalDialog(...blablablabla...)

if (retVal) // verifico se la window chiamata mi torna "true"
  __doPostBack(...); // effettuo il refresh


sulla chiamata, se ad esempio hai un pulsante "Ok" che salva le modifiche e la chiude, puoi scrivere qualcosa del tipo (in C#)
public void btnSalva_Click(object sender, EventArgs e)
{
  someMethodThatSavesData();
  ScriptManager.RegisterStartupScript(this, this.GetType(), "closeOk", "window.returnValue = true; self.close();", true);
}


Nota: nell'ultimo snippet sto supponendo che usi AJAX e quindi hai uno ScriptManager in pagina, altrimenti usa this.ClientScript.

HTH,
m.
27 messaggi dal 22 novembre 2004
Ok, vi ringrazio è la soluzione che stavo cercando, solo che uso VB.Net.

Percio' il mio codice chiamante è:

Dim strPagina As String = String.Format("gruppi_lavoro_dett.aspx?COD_GLAV={0}", DGV_GRUPPOLAVORO.SelectedDataKey.Values.Item(0))

            Dim popupScript As String = "<script language='javascript'>window.showModalDialog('" & strPagina & "', 'CustomPopUp', " & _
                                        "'width=500, height=300, menubar=no, resizable=yes')</script>"

            Page.RegisterStartupScript("PopupScript", popupScript)


Gestire il ritorno booleano (scelta migliore), come è gestibile a livello di codice?

Lanfra
Bene, non ti resta che modificare il tuo codice chiamante per emettere uno script simile a quello che ti ho scritto sopra.

Dove trovi difficoltà?
27 messaggi dal 22 novembre 2004
Come vedi dal mio codice VB, script java io lo genero in una variabile string ed eseguo un RegisterStartupScript.

Il problema o meglio sarà che questscript mi ha fuso un po', è testare il ritorno booleano....
Benissimo, semplicemente aggiungi alla tua stringa la parte mancante dello script, seguendo i consigli che ti ho dato.

L'unico problema potresti averlo per scrivere correttamente la chiamata a __doPostBack. Io ti consiglio di fare così:

1) aggiungi in pagina un pulsante che chiami magari btnRefresh e a cui metti l'attributo style="visibility:hidden"
2) gestisci lato server l'evento click di questo pulsante con il codice necessario per effettuare il refresh dei dati
3) quando componi la stringa del tuo script, puoi ottenere la chiamata a __DoPostBack tramite
Me.ClientScript.GetPostbackEventReference(Me.btnRefresh, String.Empty)


A presto,
m.
27 messaggi dal 22 novembre 2004
Abbi pazienza, ma non ti seguo.
Il mo problema è sulla chiamante, non sò gestire il ritorno della modale!
Tu gentilmente mi indichi in C#:
var retVal = window.showModalDialog(...blablablabla...)

if (retVal) // verifico se la window chiamata mi torna "true"
  __doPostBack(...); // effettuo il refresh


mentre io in VB:
Dim popupScript As String = "<script language='javascript'> var a = window.showModalDialog('" & strPagina & "', 'CustomPopUp', " & _
                                        "'width=500, height=300, menubar=no, resizable=yes, scrollbars=yes')</script>"



In questo modo mi apre la modale, ma non riesco a capire come fare a gestire il valore di ritorno della chiamata [script eseguito correttamente secondo le tue indicazioni]sulla chiamante, anche x' dopo che si chiude la modale non succede niente, ovvere non ritorna alla chiamante, nonostante

Dim sScript As String
        sScript = "<script language=Javascript>window.returnValue = true; self.close();</script>"
        RegisterStartupScript("ReloadOpener", sScript)


Sto pensando di abbandonare la figata della modale ed aprire una normale popup!!!

Che dici? Cmq grazie per tutti i consigli


svelato l'arcano.. non è C# quello che ti indico, è javascript, infatti non capivo che tipo di difficoltà avessi

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.