使用UpdatePanel的UpdateProgress

时间:2010-11-01 21:58:35

标签: asp.net asp.net-ajax updateprogress

当用户点击“下一步”按钮转到下一页时,我想在页面A上显示UpdateProgress。下一页是页面B,其中包含大量数据。

单击该按钮时,它不会显示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>

4 个答案:

答案 0 :(得分:5)

尝试将DisplayAfter设置为一个非常小的值,以便立即显示进度指示器,例如:

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

答案 1 :(得分:3)

要尝试的事情:

1)在UpdatePanel

中移动 UpdateProgress 控件

2)从 UpdateProgress 标记中删除 AssociatedUpdatePanelID 属性

我依靠选项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>

答案 2 :(得分: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> 

答案 3 :(得分:0)

尝试将UpdateProgress控件放在UpdatePanel中。这应该适合你。
希望有所帮助!