如何在ASP.NET中禁用某些控件的UpdateProgress

本文关键字:控件 UpdateProgress ASP NET | 更新日期: 2023-09-27 18:08:33

我有一个使用ASP.NET开发的网站。在那里发生了很多ajax请求。所以我想在ajax请求发生时显示图像,并在数据加载后隐藏图像。现在可以了

到目前为止我做了什么

<asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="uppnlLocation">
<ProgressTemplate>
                  <img src="images/loading.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel runat="server" UpdateMode="Conditional" ID="uppnlLocation">
    <ContentTemplate>
  <asp:DropDownList ID="ddContinents" runat="server" CssClass="form-control" OnSelectedIndexChanged="ddContinents_SelectedIndexChanged" AutoPostBack="true">   </asp:DropDownList>
 <asp:TreeView runat="server" ID="tvCountries" OnSelectedNodeChanged="tvCountries_SelectedNodeChanged"></asp:TreeView>
   </ContentTemplate>
 </asp:UpdatePanel>

所以在上面的代码中,当用户从下拉列表中选择一个大陆,属于该大陆的国家将被加载到下面的树视图。所以我想显示一个加载图像,当用户从下拉菜单中选择一个大陆,而加载的国家。现在它起作用了。但问题是,当用户在树视图中选择树节点时,它也显示了这个进度控制图像。我不想在那个动作上显示那个图像。如何禁用它?

我看到一个关于这个的帖子。

是否有一种方法来禁用UpdateProgress为某些异步回发?

我实现了它。但是下拉菜单的回发没有发生。

那么如何实现这一点呢?

如何在ASP.NET中禁用某些控件的UpdateProgress

最好使用DisplayAfter参数来提高出现的延迟,因为我知道这发生得太快了。不要使用复杂的javascript解决方案,只需添加1或2秒的延迟…

<asp:UpdateProgress ID="UpdateProgress1" 
           runat="server" AssociatedUpdatePanelID="uppnlLocation" DisplayAfter="2000">
     <ProgressTemplate>
         <img src="images/loading.gif" />
     </ProgressTemplate>
</asp:UpdateProgress>

如果你同意的话,为什么不使用javascript强制它不显示呢?对于普通的更新面板和调用更新进度并不总是显示。最好使用javascript来弹出更新进度,而不是使用默认的方式。

弹出Update Progress的代码

function showUpdateProgress() {
        var updateProgress = document.getElementById("<%=upProgress.ClientID%>");
        updateProgress.style.display = 'block';
    }
    function HideUpdateProgress() {
        var updateProgress = document.getElementById("<%=upProgress.ClientID%>");
        updateProgress.style.display = 'none';
        Sys.Application.remove_load(HideUpdateProgress);
    }

如果你使用这种方式,当你的工作是在代码后面完成,你需要调用javascript隐藏更新进度

根据以下

在CS文件

ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "Script", "Sys.Application.add_load(HideUpdateProgress);", true);

希望对你有帮助