26 messaggi dal 13 settembre 2007
Salve a tutti,

ho un'applivazione WEB dove in conseguenza di un evento vorrei eseguire del codice Javascript poi del codice Server ed in fine altro codice JavaScript.

Ho notato invece che i due blocchi di Javascript vengono eseguiti in seguenza e dopo il codice C#.

Mi spiego meglio con un esempio :

protected void gvUsers_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName.Equals("Insert"))
{
//esecuzione codice C#
...
...
...

//Esecuzione codice JavaScript
string myScript = @"MessaggioElaborazione();";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), Guid.NewGuid().ToString(), myScript, true);
//Fine esecuzione codice JavaScript

//esecuzione codice C#
...
...
...

//Esecuzione codice JavaScript
string myScript1 = @"NascondiMessaggioElaborazione();";
ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), Guid.NewGuid().ToString(), myScript1, true);
//Fine esecuzione codice JavaScript

//esecuzione codice C#
...
...
...


Praticamente mi viene eseguito prima tutto il codice server e alla fine le due funzioni JavaScript.

Esiste un modo per far rispettare la seguenza sopra riportata ?


grazie.


ciao.
pepp ha scritto:
Esiste un modo per far rispettare la seguenza sopra riportata ?

Sì. Il primo blocco di codice JavaScript deve essere collegato all'evento client della pagina (ad asempio al click) *prima* del postback; per farlo hai diverse strade, ne elenco alcune:
1) se il controllo asp.net che scatena l'evento espone onclientclick associagli la tua funzione javascript
2) aggiungi l'attributo "onclick" al controllo ed assegnali la funzione js
3) se usi jquery registra in $(document).ready il click sul controllo (lo puoi puntare con un qualunque selettore di jquery) facendogli eseguire la funzione js
4) usa javascript per appendere all'evento click la funzione js (è identico al metodo #3 ma devi scrivere un po' più di codice)

Per l'esecuzione dei blocchi c# e javascript successivi sai già come fare

HTH

Matteo Casati
GURU4.net
652 messaggi dal 21 gennaio 2007
Contributi
io direi di no..
perchè prima viene eseguita la parte lato-server, poi quella lato-client.

secondo me dovresti rivedere un pò la logica di quello che ti serve fare, per cercare di svilupparlo in un altra maniera.
26 messaggi dal 13 settembre 2007
Sono giunto alla conclusione che, come dice PeppeDotNet, non sia possibile proprio perchè viene eseguita prima la parte lato-server, poi quella lato-client.

Ho risolto inserendo il javascript nei vari eventi....


Ciao.
io come Matteo invece penso che sia possibile, basta ad esempio utilizzare ajax, esegui il tuo codice lato client, fai richiamre un metodo sul server ed in fine al completamento esegui di nuovo codice lato client.

di sicuro dovrai rinunciare a qualche automatismo offerto dai controlli lato server

ciao marco

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx
Io invece aggiungo che non solo è possibilissimo e l'esempio di Matteo è il modo più pulito per farlo, ma non serve neanche AJAX!

Il primo codice JS che viene eseguito è quello sull'OnClientClick. Poi la palla passa al server, che esegue il suo codice e poi emette del javascript che verrà eseguito al successivo render della pagina.

Dov'è il problema?
m.
Infatti, non capisco nè quale sia il problema nè perché usare AJAX (e questa è la prima volta che sono in disaccordo con Nostromo!!!).
Come detto (e ribadito da Cradle) è fattibile in modo veramente semplice. Tra l'altro, interpretando un po' il codice inviato, mi sembra di capire che la necessità sia quella di mostrare un messaggio di attesa (dedotto dalla funzione js "MessaggioElaborazione();"). Se è così e non ti vuoi sbattere con JavaScript puoi usare questo controllo: BusyBoxDotNet
HTH

Matteo Casati
GURU4.net
m.casati ha scritto:
Infatti, non capisco nè quale sia il problema nè perché usare AJAX (e questa è la prima volta che sono in disaccordo con Nostromo!!!).


bhe si forse, anzi in questo caso ajax è superfluo, e che più che altro avevo capito che era necessario richiamare un metodo, delle pagina.

insomma ho forse travisato

comunque il concetto è che si può fare :D

ciao marco
Modificato da nostromo il 12 marzo 2009 15.25 -

Chi parla senza modestia troverà difficile rendere buone le proprie parole.
Confucio

http://nostromo.spaces.live.com/default.aspx

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.