Domanda

sto mostrando una finestra di dialogo modale tramite "window.showModalDialog (...", che avviene in una funzione VBScript (la pagina mostrata è aspx). Mi piacerebbe fare un po 'di ridimensionamento della finestra in base al numero di righe in un DataTable che sta tornando. così, naturalmente, vado a registrare uno script di avvio che ridimensiona la finestra in base al numero di righe. Beh, che non ha funzionato, così ho provato a registrare uno script che appena ha mostrato un msgbox.

Il codice simile (nel gestore di eventi OnLoad):

 if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            this.ClientScript.RegisterStartupScript(typeof(MyPageClassName), "hello",
                    @"<script language=vbscript>
                        sub fnWindowOnLoad()
                            MsgBox ""hello""
                        end sub
                        <script>", false);
        }
        if (!this.ClientScript.IsStartupScriptRegistered(typeof(MyPageClassName), "hello"))
        {
            throw new Exception("Failed to load script");
        }

A me sembra che questo dovrebbe funzionare e mostrare una finestra di messaggio che dice "ciao" al caricamento della pagina (ho evento onload della finestra impostato fnWindowOnLoad). Ma ciò che accade è nulla, non fa eccezione, nessun allarme. Ho provato ogni tipo mi veniva in mente nella chiamata typeof. Nulla sembra funzionare. L'unica cosa che posso pensare è che, poiché la finestra di dialogo è un ClientScript.RegisterStartupScript modale non verrà eseguito correttamente. Ma questo non ha alcun senso per me.

Ho messo il MsgBox "ciao" chiamata nel mio blocco di script direttamente e l'avviso mostrato, quindi è possibile. Ma ho bisogno di modificare alcuni argomenti nel codice dietro quindi devo usare RegisterStartupScript per quanto posso dire.

È stato utile?

Soluzione 2

La soluzione per questo era di avere uno script che legge un valore di un campo nascosto e poi ridimensionata la finestra di dialogo. Il valore è stato impostato sulla Page Load. Utilizzando RegisterStartupScript mai sembrava funzionare, né ha fatto RegisterClientScript, quindi sono abbastanza sicuro di dialogo modale e RegisterXxx non vanno d'accordo. Necessità di utilizzare window.dialogHeight & window.dialogWidth in VBScript.

Altri suggerimenti

Hai provato di aprire la finestra tramite window.open () piuttosto che window.showModalDialog ()? Ho visto alcuni post sul web su incompatibilità tra showModalDialog () e RegisterStartupScript.

showModalDialog () è un solo IE metodo, quindi non è consigliabile in ogni caso. Lo so che è conveniente perché restituisce un valore, ma ci sono vari modi per simulare questa funzionalità.

Modifica L'altro problema con showModalDialog () è che IE spesso memorizza nella cache i risultati. Ciò significa che se una volta che si chiama la finestra di dialogo, non si ridimensiona, poi un'altra volta che lo fai, allora secondo tempo potrebbe ottenere la vostra prima finestra di cache. Un modo per aggirare questo è quello di aggiungere un querystring unica alla fine. Come MyDialog.aspx? Q = 320.934 (generato o generato in modo casuale sulla base di tic del server).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top