11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


non mi esegue l'assegnazione della variabile Pippo

Credo che la variabile Pippo venga assegnata correttamente ma lo puoi verificare tu stesso mettendo un breakpoint sulla riga in cui l'assegni e lanciando l'applicazione in debug. Hai dimestichezza con il debugger di Visual Studio?

Qui penso sia importante chiarire cosa fa questa riga di codice:
ClientScript.RegisterStartupScript(Me.GetType(), "StampaScontrino", "<Script language='JavaScript'>window.location.href='StampaScontrino:" + Parametri + "';</" & "Script>")

Questa riga NON avvia la stampa dello scontrino. Semplicemente, si limita ad aggiungere un pezzo di codice javascript che verrà eseguito dal client più tardi, quando ormai l'esecuzione della funzione VenditaOk e dell'intera pagina ASPX si è ormai conclusa.

Per dirla in altro modo: ASP.NET elabora completamente la pagina ASPX e poi invia al client l'output HTML, che è il risultato di questa elaborazione. Ad invio avvenuto, il client chiude la connessione con il server e si mette ad elaborare l'output HTML ricevuto. Quando incontra il pezzo di codice javascript che avvia la stampa dello scontrino, lo esegue. Il server non ne sa nulla del fatto che quel javascript sia stato eseguito sul browser del client.

ciao,
Moreno

Enjoy learning and just keep making
167 messaggi dal 08 dicembre 2003
Ok... la tua spiegazione mi ha chiarito il tutto... almeno credo :-)

Ora però ti pongo il mio quesito:
- Subito dopo il richiamo della Sub Script_Scontrino (codice javascript) c'è un Response.Redirect ad un'altra pagina.aspx e succede questo:
- Se lascio che venga eseguito il Response.Redirect NON mi stampa lo scontrino
- Se invece NON eseguo il Response.Redirect mi stampa correttamente lo scontrino

Questo perchè forse il Response.Redirect elabora subito la nuova pagina 'stoppando' la precedente e, di conseguenza, la stampa dello scontrino? Se è così c'è la possibilità di attendere il termine dell'elaborazione della prima pagina e dopo eseguire la seconda?

Grazie sempre per i tuoi preziosi suggerimenti... sperando di non essere OT
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Questo perchè forse il Response.Redirect elabora subito la nuova pagina 'stoppando' la precedente e,

Diciamo di sì...
Il Response.Redirect invia comunque una risposta al client ma questa risposta contiene giusto un'intestazione che lo invita a visitare un'altra pagina. Quindi il browser non elabora per niente il javascript di stampa scontrino ma invia immediatamente una nuova richiesta alla pagina verso cui l'hai reindirizzato.


Se è così c'è la possibilità di attendere il termine dell'elaborazione della prima pagina e dopo eseguire la seconda?

Sì, per prima cosa elimina il Response.Redirect. Quindi aggiungi del codice javascript che farà navigare il browser verso NuovaPagina.aspx.

ClientScript.RegisterStartupScript(Me.GetType(), "StampaScontrino", "<Script language='JavaScript'>window.location.href='StampaScontrino:" + Parametri + "'; window.location.href='NuovaPagina.aspx';</" & "Script>"


Se non dovesse comunque stamparti lo scontrino, prova ad aspettare mezzo secondo.
ClientScript.RegisterStartupScript(Me.GetType(), "StampaScontrino", "<Script language='JavaScript'>setTimeout(function() {window.location.href='StampaScontrino:" + Parametri + "';}, 500)</" & "Script>"


Dato che la navigazione viene scatenata lato client, il browser eseguirà il codice di stampa scontrino E POI visiterà la nuova pagina.

ciao,
Moreno
Modificato da BrightSoul il 06 agosto 2018 13.38 -

Enjoy learning and just keep making
167 messaggi dal 08 dicembre 2003
Buongiorno Moreno... Grazie! Ha funzionato perfettamente.
Ho dovuto usare però il timeout di mezzo secondo.
A presto e di nuovo grazie per la cortese disponibilità.

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.