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

时间:2015-08-19 06:21:07

标签: c# asp.net ajax asynchronous updateprogress

我有一个使用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>

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

我看到有关此事的帖子。

Is there a way to disable UpdateProgress for certain async postbacks?

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

那么如何实现这个目标呢?

非常感谢。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

那么为什么不只是使用javascript强制它显示没有,如果你没关系... 对于正常更新面板和调用更新进度并不总是显示。最好使用javascript弹出更新进度而不是使用默认方式。

弹出更新进度的代码

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);
    }

如果您在Code中完成作业后使用这种方式,则需要调用javascript来隐藏更新进度

按照以下

在CS文件中

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

希望这能帮到你