[转]MSDN – 在客户端脚本中为 UpdateProgress 控件编程

上面的进程演示怎么样在异步回发并非来自关联的 UpdatePanel 控件内部时体现UpdateProgress 控件。
此过程假定你已形成本学科的第一有的。

<html  >
<head id=”Head1″ runat=”server”>
    <title>UpdateProgress Tutorial</title>
    <style type=”text/css”>
    #UpdatePanel1 {
      width:200px; height:100px;
      border: 1px solid gray;
    }
    #UpdateProgress1 {
      width:200px; background-color: #FFC080;
      bottom: 0%; left: 0px; position: absolute;
    }
    </style>
</head>
<body>
    <form id=”form1″ runat=”server”>
    <div>
        <asp:ScriptManager ID=”ScriptManager1″ runat=”server” />
        <script language=”javascript” type=”text/javascript”>
        <!– 
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        function CancelAsyncPostBack() {
            if (prm.get_isInAsyncPostBack()) {
              prm.abortPostBack();
            }
        }
        prm.add_initializeRequest(InitializeRequest);
        prm.add_endRequest(EndRequest);
        var postBackElement;
        function InitializeRequest(sender, args) {
            if (prm.get_isInAsyncPostBack()) {
                args.set_cancel(true);
            }
            postBackElement = args.get_postBackElement();
            if (postBackElement.id == ‘Panel1Trigger’) {
                $get(‘UpdateProgress1’).style.display = ‘block’;                
            }
        }
        function EndRequest(sender, args) {
            if (postBackElement.id == ‘Panel1Trigger’) {
                $get(‘UpdateProgress1’).style.display = ‘none’;
            }
        }
        // –>
        </script>
        <asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
            <ContentTemplate>
                <asp:Label ID=”Label1″ runat=”server” Text=”Panel rendered.”></asp:Label><br />
                <asp:Button ID=”Button1″ runat=”server” Text=”refresh” OnClick=”Button1_Click” />
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID=”Panel1Trigger” />
            </Triggers>
        </asp:UpdatePanel>
        <asp:Button ID=”Panel1Trigger” runat=”server” Text=”Trigger” OnClick=”Panel1Trigger_Click” />
        <asp:UpdateProgress ID=”UpdateProgress1″ runat=”server” AssociatedUpdatePanelID=”UpdatePanel1″>
            <ProgressTemplate>
                Processing图片 1
                <input id=”Button2″ 
                       type=”button” 
                       value=”cancel”
                       onclick=”CancelAsyncPostBack()” />
            </ProgressTemplate>
        </asp:UpdateProgress>

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” 
 “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

<script runat=”server”>
    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label1.Text = DateTime.Now.ToString();
    }
    protected void Panel1Trigger_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label1.Text = DateTime.Now.ToString() + ” – trigger”;
    }
</script>

<script runat=”server”>
    protected void Button1_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        Label1.Text = DateTime.Now.ToString();
    }
</script>

图片 2图片 3Code
<%@ Page Language=”C#” %>

使用客户端脚本展现更新速度
在下列方案中,将不会活动呈现 UpdateProgress 控件:
UpdateProgress
控件与某个特定的立异面板相关联,但异步回发是从一个未位于该更新面板内的控件引发的。

 

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” 
 “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;

 

UpdateProgress 控件不与此外 UpdatePanel 控件相关联,
并且异步回发不是从一个既不放在 UpdatePanel
内部也不是一个触发器的控件引发。
例如,使用代码执行更新。

    </div>
        <asp:UpdateProgress ID=”UpdateProgress1″ runat=”server”>
            <ProgressTemplate>
                Processing图片 4
                <input id=”Button2″ 
                       type=”button” 
                       value=”cancel” 
                       onclick=”CancelAsyncPostBack()” />
            </ProgressTemplate>
        </asp:UpdateProgress>
    </form>
</body>
</html>

    </div>
    </form>
</body>
</html>

图片 5图片 6Code
<%@ Page Language=”C#” %>

在客户端脚本中收回异步回发
说到底代码1:

正文转自: http://msdn.microsoft.com/zh-cn/library/bb386518.aspx

末尾代码2:

<html  >
<head runat=”server”>
    <title>UpdateProgress Tutorial</title>
    <style type=”text/css”>
    #UpdatePanel1 {
      width:200px; height:100px;
      border: 1px solid gray;
    }
    #UpdateProgress1 {
      width:200px; background-color: #FFC080;
      bottom: 0%; left: 0px; position: absolute;
    }
    </style>
</head>
<body>
    <form id=”form1″ runat=”server”>
    <div>
        <asp:ScriptManager ID=”ScriptManager1″ runat=”server”/>
        <script language=”javascript” type=”text/javascript”>
        <!– 
        var prm = Sys.WebForms.PageRequestManager.getInstance();
        function CancelAsyncPostBack() {
            if (prm.get_isInAsyncPostBack()) {
              prm.abortPostBack();
            }
        }
        // –>
        </script>
        <asp:UpdatePanel ID=”UpdatePanel1″ runat=”server”>
            <ContentTemplate>
                <asp:Label ID=”Label1″ runat=”server” Text=”Panel rendered.”></asp:Label><br />
                <asp:Button ID=”Button2″ runat=”server” OnClick=”Button1_Click” Text=”refresh” />
            </ContentTemplate>
        </asp:UpdatePanel>

在本教程中,将透过编制 ECMAScript (JavaScript)
代码来扩张具有客户端表现的 UpdateProgress 控件。
您的代码将接纳属于 Microsoft AJAX Library 的一片段的 PageRequestManager
类。
在 UpdateProgress 控件中,您将充裕一个使用户可以撤废异步回发的按钮。
作为此任务的一有些,您将采纳客户端脚本来呈现或隐匿进度音讯。