2010-11-01 65 views
2

我想在用戶單擊「下一步」按鈕轉到下一頁時在頁面A上顯示UpdateProgress。下一頁是頁面B,該頁面負載很重。帶有UpdatePanel的UpdateProgress

單擊按鈕時,它不顯示UpdateProgress

此代碼缺少什麼,以及如何顯示?

<asp:UpdateProgress ID="UpdateProgress1" runat="Server" AssociatedUpdatePanelID="UpdatePanel1"> 
    <ProgressTemplate > 
     Please wait ... 
    </ProgressTemplate> 
</asp:UpdateProgress> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnNext" EventName="Click" /> 
    </Triggers>          

    <ContentTemplate>           
     <asp:Button ID="btnCancel" runat="server" TabIndex="1" Text="Cancel"onclick="btnCancel_Click" />          
     <asp:Button ID="btnNext" runat="server" TabIndex="2" Text="Next" onclick="btnNext_Click" /> 
    </ContentTemplate>         
</asp:UpdatePanel> 

回答

5

嘗試設置DisplayAfter到一個很小的值,使進度指示器立即出現,如:

<asp:UpdateProgress ID="UpdateProgress1" runat="Server" AssociatedUpdatePanelID="UpdatePanel1" DisplayAfter="1"> 
3

幾件事情嘗試:

1)將在UpdatePanel

2)從的UpdateProgress卸下AssociatedUpdatePanelID屬性內的的UpdateProgress控制標籤

我正在爲方案1提供服務。

編輯

這裏是一個非ProgressTemplate方式,使用客戶端的事件處理程序:

<script type="text/javascript"> 
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler); 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 

function BeginRequestHandler(sender, args) 
{ 
    // some code to show image, e.g: 
    document.getElementById('somedivwhichasimage').className = 'show'; 
} 

function EndRequestHandler(sender, args) 
{ 
    // some code to hide image, e.g: 
    document.getElementById('somedivwhichasimage').className = 'hidden'; 
} 
</script> 
+0

仍然沒有炒作.. – Tony 2010-11-01 23:40:18

+0

是您發佈的確切代碼嗎?有什麼遺漏嗎?還有其他方法可以完成這項工作(用javascript完成客戶端)。看到我的編輯另一個選項。 – RPM1984 2010-11-02 00:19:28

+1

在UpdatePanel中移動UpdateProgress控件 - >爲我工作,謝謝 – Thomas 2011-08-11 08:15:37

2

的代碼添加該代碼此頁的後面。

protected void btnNext_Click(object sender, EventArgs e) 
{ 
    System.Threading.Thread.Sleep(3000); 
} 

希望這有助於!

編輯: 請點擊此鏈接: http://msdn.microsoft.com/en-us/library/bb386421.aspx

添加從我試圖和正在aspx頁面的代碼,

<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> 

    <asp:UpdateProgress ID="UpdateProgress1" runat="Server" AssociatedUpdatePanelID="UpdatePanel1"> 
    <ProgressTemplate > 
    <asp:Label ID="lblwait" runat="server" Text="Please wait.."></asp:Label> 
    </ProgressTemplate> 
</asp:UpdateProgress> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" /> 
    </Triggers>          

    <ContentTemplate>           
     <asp:Button ID="btnCancel" runat="server" TabIndex="1" Text="Cancel" />          
     <asp:Button ID="Button1" runat="server" TabIndex="2" Text="Next" onclick="Button1_Click" /> 
    </ContentTemplate>         
</asp:UpdatePanel> 
+0

仍然無法正常工作.. – Tony 2010-11-01 23:31:34

+0

不知何故我無法添加代碼,您可以參考鏈接。希望幫助! – genericuser 2010-11-02 14:11:08

0

嘗試把UpdateProgress內部控制UpdatePanel。這應該適合你。
希望有幫助!