Goedendag,
Ik ben bezig met een klein wizardachtig formuliertje wat in een updatepanel draait. Voor de verschillende "formulier" bladen heb ik in mijn updatepanel een aantal gewone panels gemaakt die ik vanuit de code behind zichtbaar of onzichtbaar maak. Omdat het formulier informatie uitwisseld met andere systemen en ook informatie in een database moet opslaan kan er sommige enige wachttijd opslaan.
Daarom heb ik een updateProgress gemaakt die een mooi wachtbalke laat zien. Helaas komt de progresstemplate alleen maar de allereerste keer in beeld. Bij nogmaals drukken wordt hij niet zichtbaar en ook een andere button maakt niet uit. Mijn code ziet er zo uit
Aanmelden.aspx
Code Behind
Ik heb al op internet gezocht en een aantal mogelijke oplossingen gevonden (displayAfter in de updateProgress, handmatig de thread laten slapen etc) maar die hebben allemaal nog geen oplossing gegeven.
Iemand hier enig idee?
Ik ben bezig met een klein wizardachtig formuliertje wat in een updatepanel draait. Voor de verschillende "formulier" bladen heb ik in mijn updatepanel een aantal gewone panels gemaakt die ik vanuit de code behind zichtbaar of onzichtbaar maak. Omdat het formulier informatie uitwisseld met andere systemen en ook informatie in een database moet opslaan kan er sommige enige wachttijd opslaan.
Daarom heb ik een updateProgress gemaakt die een mooi wachtbalke laat zien. Helaas komt de progresstemplate alleen maar de allereerste keer in beeld. Bij nogmaals drukken wordt hij niet zichtbaar en ook een andere button maakt niet uit. Mijn code ziet er zo uit
Aanmelden.aspx
C#:
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
36
37
38
39
40
41
42
| <asp:UpdatePanel ID="updateDeelnemer" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false"> <ContentTemplate> <div style="width:100%; height:40px; line-height:40px; font-size:20px; font-weight:bold; background-color:#CCC;"> <span style="margin-left:10px">Stap <asp:Label ID="lblDeelnemerNummer" runat="server" /></span> </div> <div> <div class="textBox"> <!-- stap 1 --> <asp:Panel ID="pnlDeelnemerStap1" runat="server"> //Aantal form elementen (2 textboxen) <br /><br /> <asp:Button ID="btnDeelnemer1" runat="server" OnClick="deelnemer1Click" Text="Volgende" ValidationGroup="deelnemer1" Width="100px" BackColor="White" BorderWidth="1px" BorderColor="Black" /> <asp:Label ID="lblDeelnemer1Message" runat="server" ForeColor="Red" /> <br /> </asp:Panel> <!-- stap 2 --> <asp:Panel ID="pnlDeelnemerStap2" runat="server" Visible="false"> //Nog een aantal form elementen (2x textbox, 1x checkbox) <asp:Button ID="btnDeelnemer2" OnClick="deelnemer2Click" runat="server" Text="Volgende" ValidationGroup="deelnemer2" Width="100px" BackColor="White" BorderWidth="1px" BorderColor="Black" /> <asp:Label ID="lblDeelnemer2Message" runat="server" ForeColor="Red" /> </asp:Panel> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnDeelnemer1" EventName="Click" /> <asp:AsyncPostBackTrigger ControlID="btnDeelnemer2" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress runat="server" AssociatedUpdatePanelID="updateDeelnemer" DisplayAfter="0" > <ProgressTemplate> <div style="margin-left:30px; margin-top:10px; height:40px; line-height:32px;"> <div style="float:left;"> <img src="Styles/Images/ajax-loader.gif" alt="Een ogenblik" /> </div> <div style="float:left; line-height:32px; margin-left:5px;"> Een ogenblik geduld.. </div> </div> </ProgressTemplate> </asp:UpdateProgress> </div> </div> |
Code Behind
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| protected void deelnemer1Click(object sender, EventArgs e) { //Wissel wat informatie met een ander systeem uit pnlDeelnemerStap1.Visible = false; pnlDeelnemerStap2.Visible = true; lblDeelnemerNummer.Text = "2"; } protected void deelnemer2Click(object sender, EventArgs e) { Thread.Sleep(8000); updateDeelnemer.Update(); lblDeelnemer2Message.Text = "Done"; } |
Ik heb al op internet gezocht en een aantal mogelijke oplossingen gevonden (displayAfter in de updateProgress, handmatig de thread laten slapen etc) maar die hebben allemaal nog geen oplossing gegeven.
Iemand hier enig idee?
/post