Ajax UpdatePanel avec UpdateProgress et Timer en ASP pas si asynchrone
Bonjour,
Voila j'essaie désespérément de réaliser une page ASP avec des panels qui vont se mettre à jour à partir du Tick de plusieurs Timer.
Mes infos étant longues à aller chercher, je souhaite pouvoir afficher un message/image en attendant le retour de ces infos. Je mets en place pour cela un UpdateProgress pour chaque UpdatePanel.
Pour tester j'ai créé 2 UpdatePanel avec chacun un Trigger controlé par un Timer. Lorsque celui-ci Tick il provoque l'affiche d'un DateTime.Now dans un Label. Un petit sleep me permet de voir passer mon UpdateProgress.
Voici le code :
Page ASP :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Timer ID="Timer_heure1" runat="server" Interval="5000" OnTick="Timer_heure1_Tick" Enabled="true"></asp:Timer>
<asp:Timer ID="Timer_heure2" runat="server" Interval="10000" OnTick="Timer_heure2_Tick" Enabled="true"></asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server" RenderMode="Block" >
<Triggers><asp:AsyncPostBackTrigger ControlID="Timer_heure1" EventName="Tick" /></Triggers>
<ContentTemplate>
<asp:label ID="Label1" runat="server" Text="Label1">
</asp:label> <br />
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Progression en cours 1
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<Triggers><asp:AsyncPostBackTrigger ControlID="Timer_heure2" EventName="Tick" /></Triggers>
<ContentTemplate>
<asp:label ID="Label2" runat="server" Text="Label2">
</asp:label><br />
<asp:UpdateProgress ID="UpdateProgress2" runat="server">
<ProgressTemplate>
Progression en cours 2
</ProgressTemplate>
</asp:UpdateProgress>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content> |
Le code behind :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| protected void Timer_heure1_Tick(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(2000);
Label1.Text = DateTime.Now.ToLongTimeString();
}
protected void Timer_heure2_Tick(object sender, EventArgs e)
{
System.Threading.Thread.Sleep(2000);
Label2.Text = DateTime.Now.ToLongTimeString();
} |
Bon pour compliquer un peux j'ai mis tout ça dans un PlaceHolder avec une MasterPage mais ça ne semble pas poser problème
En réalité ce qui m'embête c'est que lorsqu'un Timer Tick les 2 UpdateProgress se déclenchent.
Et en sortant les Progress du Panel et en les rattachant a leur ID (AssociatedUpdatePanelID) c'est pire. Et puis quel UpdateMode choisir !?
Je pense ne pas avoir compris une petite subtilité de ces contrôles :(
Merci de votre aide