【问题标题】:UpdateProgress and Loading bar更新进度和加载栏
【发布时间】:2015-04-18 20:21:37
【问题描述】:

我在这个链接http://www.aspdotnet-suresh.com/2010/10/how-to-show-progressbar-during.html中使用了这个教程来制作“进度条”,效果很好,但是我在页面中有另一个UpdatePanel,每次点击这个UpdatePanel中的一个按钮,“进度条”显示出来。

我不希望页面中的每个 UpdatePanel 都显示进度条。我写了AssociatedUpdatePanelID="pnlData",但还是不行。我怎样才能做到这一点?

另一个问题:如果我在 UpdatePanel 中有 2 个与 UpdateProgress 关联的按钮,并且我只希望这些按钮中的一个显示进度条而不是两个按钮,这可能吗?

【问题讨论】:

    标签: c# asp.net progress-bar updatepanel updateprogress


    【解决方案1】:

    每个按钮点击和每个更新面板都显示进度条的原因是处理程序绑定到页面的请求事件:

    Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    

    因此,每次 AJAX 往返服务器时,进度条都会先显示,然后再隐藏。

    要改变这种行为,我建议找出请求的发起者。我认为它将在BeginRequestHandlersenderargs 参数中的某处可用。使用 F12 开发人员工具调试对象。然后只需向popup.show(); 添加一个额外的条件。您可以使用这种(或类似的)方法来过滤掉应该触发进度条的按钮和更新面板。

    通常的方法是只为长时间运行的操作显示进度条。因此,您可以在BeginRequest 事件期间将popup.show(); 包装在setTimeout 中,如果EndRequest 发生得更早,则指定超时,您将使用clearTimeout 重置超时。

    【讨论】:

      【解决方案2】:

      你提到你使用了 AssociatedUpdatePanelID="pnlData"。但是,您是否设置了 UpdateMode="Conditional"。像这样:-

      <asp:UpdatePanel ID="up1" runat="server" UpdateMode="Conditional">

      【讨论】:

      • 是的,我将其设置为“有条件”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多