Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Problemi con Page.Response
martedì 16 gennaio 2007 - 16.50
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
liuc
Profilo
| Junior Member
146
messaggi | Data Invio:
mar 16 gen 2007 - 16:50
Ciao,
per la mia applicazione web ho bisogno di esportare dei dati in formato Excel; per l'esportazione ho creato una classe con un metodo che restitusce un flusso xml al client tramite istruzioni del tipo Response.Write(). (inizialmente il contenttye è impostato a "application/ms-excel"). La procedura funziona correttamente ma ora mi si pone un problema pratico :
Dal form principale , cliccando sul pulsante di esportazione, si apre una finestra di popup nella quale l'utente seleziona alcuni parametri e quindi avvia l'esportazione.
Vorrei che al termine dell'esportazione automaticamente la finestra di popup si chiudesse. Per chiudere la finestra utilizzo l'istruzione
Respone.Write("<SCRIPT>window.close;</SCRIPT>")
che funziona benissimo da sola, ma richiamata successivamente alla procedura di esportazione ha l'effetto di aggiungere il testo al file xml che mi definisce il file Excel.
La mia procedura di esportazione termina richiamando l'istruzione Response.Flush().
Al ritorno provando a chiudere la finestra con l'istruzione precedente mi si verifica il problema che ho menzionato.
Non posso terminare la procedura con Response.End perchè automaticamente tutto il testo successivo verrebbe ignorato... e allora come posso fare?
Se provo a scrivere queste istruzioni al ritorno dalla procedura di esportazione :
Response.ContentType="text/html"
Respone.Write("<SCRIPT>window.close;</SCRIPT>")
Response.End()
il file Excel è formattato correttamenet (lo script non è inserito nel flusso) ma
comunque la pagina non viene chiusa.
Come posso fare?
spero di essere stato chiaro :-)
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
gio 18 gen 2007 - 11:29
>Ciao,
>per la mia applicazione web ho bisogno di esportare dei dati
>in formato Excel; per l'esportazione ho creato una classe con
>un metodo che restitusce un flusso xml al client tramite istruzioni
>del tipo Response.Write(). (inizialmente il contenttye è impostato
>a "application/ms-excel"). La procedura funziona correttamente
>ma ora mi si pone un problema pratico
Bel problemino originale. Non mi è mai capitato di fare questa operazione, intendo con chiusura di finestra. Io ti suggerirei magari di sfruttare AJAX se sei capace (è abbastanza banale in questo caso) e risolvere due problemi in uno. Il primo di non usare Popup spesso bloccati dai Popup Blocker, il secondo di rendere più intuitivo il tutto. Io farei così.
Nella pagina principale dove clicchi per aprire il popup, metterei le opzioni di creazione del file Excel. Poi metti un bel button collegato a una function Javascript che tramite XMLHTTP fa una GET della pagina che produce il file di Excel passandogli tutti i parametri scelti. Quella pagina non fa una Response.Write all'utente, ma scrive il file su disco (del server). A quel punto alla fine della GET (visto che la chiamata è sincrona) il controllo ritorna al Javascript. A quel punto puoi modificare sempre da Javascript un link dentro la pagina HTML facendolo puntare al file Excel appena creato e mettendo come label "Il file è stato creato. Scaricalo ora!".
Spero di essere stato chiaro. Un po' più complessa da realizzare dell'altra ma secondo me molto più potente, flessibile e carina.
david
David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
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 !