ASP.Net客户端模态进度指示器

时间:2012-06-18 18:42:53

标签: asp.net ajax

我尝试过实施this example,但进度从未显示过。我的页面不包含任何UpdatePanel或任何东西,这可能是为什么?

在我的页面声明中,我添加了:

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

在头部元素中我添加了:

<script src="Scripts/jsUpdateProgress.js" type="text/javascript"></script>

我立即在表单标签内添加:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:Panel ID="panelUpdateProgress" runat="server" CssClass="updateProgress">
    <asp:UpdateProgress runat="server" ID="UpdateProg1" DisplayAfter="0">
        <ProgressTemplate>
            <div style="position:relative; top:30%; text-align: center;">
                <img src="Processing.gif" style="vertical-align: middle" alt="Processing"/>
                  Processing...
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender runat="server" ID="ModalProgress" TargetControlID="panelUpdateProgress" BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress"/>

我在最后一个表单标签后面添加了:

<script type="text/javascript">
        Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);
        var ModelProgress = '<%= ModalProgress.ClientID %>';
        function beginReq(sender, args) {
            $find(ModalProgress).show();
        }            
        function endReq(sender, args) {
            $find(ModalProgress).hide();
        }
</script>

我希望显示进度的按钮:

<asp:Button runat="server" ID="submit" CssClass="multiViewTab" Text="Submit"/>

该按钮肯定会回发,因为在我的表格标签中我有:

onsubmit="return validateForm()"

validateForm运行。如果表单有效,validateForm也会启动submitForm函数,并且这包含对AJAX调用Web服务的JQuery调用。

拿2:

更简单和纯粹的AJAX,但仍然不起作用。

 </form>
 <script type='javascript'>
   $(document).ready(function() {
    $('body').append('<div id="ajaxBusy"><p><img src="Processing.gif"></p></div>');
    $('#ajaxBusy').css("updateProgress");
  });

  $(document).ajaxStart(function () {
            $('#ajaxBusy').css("z-index", 2);
        }).ajaxStop(function () {
            $('#ajaxBusy').css("z-index", -1);
        });

我正在使用z-index,因为我有一个临时的“向导”,它本质上使用z-index显示/隐藏div,如果我没有更改z-index,则不会显示进度div。

1 个答案:

答案 0 :(得分:1)

根据MSDN,UpdateProgress会在更新UpdatePanel的内容时提供反馈。

  

我的页面不包含任何UpdatePanel或任何东西,可能是这样   为什么呢?

简而言之,是的。

来源:UpdateProgress Class

以上链接有一个很好的例子。