如何在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为某些异步回发?
我实现了它。但是下拉菜单的回发没有发生。
那么如何实现这一点呢?
最好使用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);
希望对你有帮助