部分回发时不显示UpdateProgress

时间:2011-02-08 14:48:48

标签: javascript .net asp.net asp.net-ajax updatepanel

我有一些耗时的服务器端功能,所以我尝试逐步执行每个功能,并告知用户进度。

所以我的方法是:

  • 创建一个可见按钮,用于执行异步回发并处理服务器端上的click事件
  • 执行第一个功能
  • 更新标签以通知用户该功能是否成功执行
  • 注册一个javascript,触发第二个不可见(Style="display: none")按钮的点击事件,该按钮也被注册为UpdatePanel的异步触发器
  • 将页面发送回客户端并执行脚本以单击隐藏按钮
  • 处理按钮单击,通知用户,注册js获取第三个隐形按钮,执行按钮单击等等...

但问题是尽管我已正确设置了AssociatedUpdatePanelID,但不会显示UpdateProgress控件。这些功能都被正确触发,标签正在更新,只有UpdateProgress保持不可见。

请看一下:

<asp:UpdateProgress ID="UpdateProgress1" DynamicLayout="true" runat="server" AssociatedUpdatePanelID="UpdFormPanel" DisplayAfter="0">
    <ProgressTemplate>
        <div class="progress">
            <asp:Image ID="ImgProgress" runat="server" ImageUrl="~/images/ajax-loader-arrows.gif"
                ToolTip="loading..." />&nbsp;please wait...
        </div>
    </ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdFormPanel" runat="server" UpdateMode="conditional" ChildrenAsTriggers="false">
    <ContentTemplate>
      ....
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="btnShowUploadResult" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnExtractFile" EventName="Click" />
        <asp:AsyncPostBackTrigger ControlID="btnShowResultView" EventName="Click" />
    </Triggers>
</asp:UpdatePanel>
<asp:Button ID="btnShowUploadResult" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />
<asp:Button ID="btnExtractFile" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />
<asp:Button ID="btnShowResultView" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />

通过这种方式,我在按钮单击事件处理程序中注册了javascript:

AjaxControlToolkit.ToolkitScriptManager.RegisterStartupScript(Me.UpdFormPanel, GetType(String), "ShowResultView", "$get('" & Me.btnShowResultView.ClientID & "').click();", True)

提前谢谢。

1 个答案:

答案 0 :(得分:1)

您是否在任何地方的代码中设置启用或可见属性?这可能导致页面无法呈现控件。你验证了html在那里吗?你确定在需要时正确改变了风格吗?使用萤火虫并设置断点。走过js。