AJAX UpdatePanel e UpdateProgress

domenica 11 ottobre 2009 - 10.15

Dinix Profilo | Newbie

Vorrei che lanciando il comando di aggiornamento se possibile oltre che far comparire l'updateprogress poter rendere invisibile il panel.

questo è il codice funzionante:

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <br /> <br /> <asp:Button ID="Button1" runat="server" Text="Button" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1"> <ProgressTemplate> attendi ... </ProgressTemplate> </asp:UpdateProgress>

in pratica vorrei che alla pressione del button1 durante la visualizzazione del progress venga resa invisibile la label1.

E' possibile farlo ?

Gluck74 Profilo | Guru

si certe, con pochi accorgimenti si arriva al risultato richiesto,
però prima vorrei correggere una piccola imprecisione:

essendo l'updatePanel dichiarato in modo standard (updateMode=always, childrenAsTriggers=true), ed essendo il bottone1 all'interno del pannello, non hai bisogno di assegnarlo come trigger.

Per il tuo risultato invece, puoi agire sia lato client che lato server:
1 - Client:
<script type="text/javascript"> function pageLoad() { Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginRequest); Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endRequest); } function beginRequest(sender, args) { $get("Label1").style.display = 'none'; } function endRequest(sender, args) { $get("Label1").style.display = 'inline'; } </script>

2 - lato server
puoi usare il controllo AnimatePanelExtender

Dinix Profilo | Newbie

Grazie mille, oggi mi ero accorto del trigger inutile, invece domani vedrò di implementare il "AnimatePanelExtender".

ho provato la soluzione Client ma ho problemi usando una MasterPage ho messo lo script in un content della testa ma non funziona.

Grazie ancora !

Gluck74 Profilo | Guru

che problemi ti da?
considera che se la label1 sta dentro un form o un altro controllo, probabilmente devi usare la proprietà ClientID:

$get("<%= Label1.ClientID %>").style.display = 'none';

Dinix Profilo | Newbie

tutto risolto, grazie ancora !
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5