2010-10-15 5 views
5

Requisiti: Abbiamo un modulo che gli utenti possono inviare. All'invio, i dati del modulo vengono utilizzati per i calcoli e la generazione di rapporti.Apri nuova finestra sul postback

Nel postback vengono visualizzati un messaggio di conferma e ulteriori opzioni. Vogliamo visualizzare il rapporto in una nuova finestra/scheda.

Condizioni: Non vogliamo utilizzare JavaScript sul postback per aprire una nuova finestra onload come questa si fermerà gli utenti che hanno JavaScript disabilitato.

Possibili soluzioni:

  1. aprire una nuova finestra sul tasto di scatto con un ID univoco (lasciate che accada il postback per l'esecuzione di codice). La nuova finestra dovrebbe richiedere un rapporto ma il codice attende fino a quando non viene generato un rapporto. Nella pagina del report, mostra un messaggio di attesa che timeout e consente all'utente di aggiornare o utilizzare l'aggiornamento della pagina in meta.
  2. Utilizzare JavaScript ma rilevare se JS è abilitato sul postback (impostando un valore variabile utilizzando JS sul caricamento del modulo), se JS è disabilitato mostra un collegamento all'utente per il report altrimenti apre una finestra utilizzando JS sul caricamento della pagina dopo il postback.

Domande:

  1. c'è un modo migliore per fare questo?
  2. Qualche consiglio per migliorare le soluzioni di cui sopra?
  3. Quale preferiresti e perché?

risposta

3

Creare un collegamento con target=_blank che reindirizza a una pagina che genera il report e quindi mostrarlo.

Gli utenti IMO che vogliono accedere al tuo sito DEVONO abilitare javascript. Il web senza Javascript non è una ragnatela, forse era a pochi anni fa, ma ora ...

Se si desidera verificare per js, è possibile registrare uno script dopo il postback:

// normal postback 
ScriptManager.RegisterStartupScript(this, GetType(), "key", "script();", true); 

// postback from a updatepanel 
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "key", "script();", true); 
1

Controllare se js è enabled e se js è abilitato, utilizzare ClientScript.RegisterStartupScript(this.GetType(), "yourScript", script, true); per eseguire js e aprire la pagina del report. Se js id non abilitato mostra un collegamento alla pagina del report.