【问题标题】:UpdateProgress with an UpdatePanel带有 UpdatePanel 的 UpdateProgress
【发布时间】:2010-11-01 21:58:34
【问题描述】:

当用户单击“下一步”按钮转到下一页时,我想在页面 A 上显示 UpdateProgress。下一页是Page 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>

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      要尝试的几件事:

      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>
      

      【讨论】:

      • 您发布的代码是否准确?有什么遗漏吗?还有其他方法可以取得进展(纯粹在客户端使用 javascript)。请参阅我的编辑以获取另一个选项。
      • 在 UpdatePanel 中移动 UpdateProgress 控件 -> 为我工作,谢谢
      【解决方案3】:

      将此代码添加到此页面的代码后面。

       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> 
      

      【讨论】:

      • 不知何故无法添加代码,您可以参考链接。希望有帮助!
      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-25
        • 2016-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多