353 messaggi dal 13 febbraio 2004
Salve,
ho la necessità di usare lato server, allo scattare di un evento "SelectedIndexChanged", due script banalissimi jquery che mostrano e nascondono una gif di loading. Sto procedendo in questo modo:

.....
showLoading(true);
GridDataItem item = (GridDataItem)RadGridOrdini.SelectedItems[0];
ViewState["codiceOrdineValue"] = item["columnCodiceOrdine"].Text;
RadGridOrdiniClienti.Rebind();
showLoading(false);

dove "showLoading" consiste in

private void showLoading(bool visible)
{
string strScript;

if (visible)
strScript = "$('.loading').show();";
else
strScript = "$('.loading').hide();";

Page page = HttpContext.Current.Handler as Page;

if (page != null)
ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), Guid.NewGuid().ToString(), strScript, true);
}

ma a quanto pare esegue solo l'ultimo script cioè quello che nasconde la gif; infatti commentando la riga showLoading(false) la gif di loading rimane sempre visibile. Qualcuno sa dirmi come ovviare questo problema?

Grazie mille a tutti
Cinzia

cinzia cipriano
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao Cinzia,
quando l'evento SelectedIndexChanged va in esecuzione, si è ormai verificato un postback, cioè un ricaricamento completo della pagina.
In quel frangente, la pagina viene rielaborata dal server e il risultato di questa elaborazione non verrà inviato al browser finché non si è completata del tutto.

Ne consegue che quando chiami showLoading(true), ASP.NET non invia nulla al browser client perché l'intera elaborazione di pagina non si è ancora completata.

Per risolvere questo tipo di problemi con un'applicazione WebForms come la tua, di solito si ricorre ad un UpdatePanel, che ti consentirà di eseguire un postback parziale. Questo renderà possibile visualizzare un'immagine di loading che verrà poi nascosta al completamento del postback parziale.

Segui questo articolo di Marco Leoncini. Ti mostra appunto come usare un UpdatePanel in combinazione con un UpdateProgress, che è un apposito elemento usato per far apparire messaggi e icone di attesa.
http://www.aspitalia.com/script/860/Controlli-UpdatePanel-UpdateProgress-ASP.NET-AJAX-1.0.aspx

ciao,
Moreno

Enjoy learning and just keep making
353 messaggi dal 13 febbraio 2004
Ciao Moreno,
grazie per la tua risposta. Si avrei potuto usare l'updatepanel ma prima ancora di leggere il tuo post ho implementato un altro metodo: ho creato una funzione javascript che risponde all'evento lato client e che mostra il loading e una lato server che invece lo nasconde. Il tutto funziona e risponde esattamente al ragionamento che hai descritto sotto.

Grazie mille e a presto
Cinzia

cinzia cipriano

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.