updateprogress用法技巧

updateprogress用法

updateprogress用于显示异步更新的状态显示,如“更新中....”,给用户更好的体验

通常实现方法:

1、在一个新的web页面中添加ScriptManager控件

<asp:ScriptManager ID="ScriptManager1" runat="server" />

2、添加UpdatePanel控件,并且在其中放置一个Button控件
     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                <asp:Button ID="Button1" runat="server" Text="更新" />
            </ContentTemplate>
        </asp:UpdatePanel>
3、在此按钮的服务器端事件中添加一个延迟操作
   System.Threading.Thread.Sleep(2000)//延迟2秒

4、添加UpdateProgress控件
        <asp:UpdateProgress ID="UpdateProgress1" runat="server"
            AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
                更新中...
            </ProgressTemplate>
        </asp:UpdateProgress>

此方法缺点:按钮必须放在UpdatePanel中,不然UpdateProgress控件不会被激活

方法改进(button放在UpdatePanel之外):

在页面上添加button2
设置button2为updatePanel1的触发控件
      <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
            </Triggers>
利用PageRequestManager的beginRequest和 endRequest事件,在所有的异步回送开始和结束后会分别调用这两个事件

首先创建js函数来出来beginRequest和endRequest事件,如下所示:

function BeginRequestHandler(sender,args)
{
$get("UpdateProgress1").style.display="block";
}

function EndRequestHandler(sender,args)
{
$get("UpdateProgress1").style.display="none";
}

告诉asp.net ajax如何通过beginRequest和endRequest事件处理这2个定制的函数

    var prm=Sys.WebForms.PageRequestManager.getInstance();
    prm.add_beginRequest(BeginRequestHandler);
    prm.add_endRequest(EndRequestHandler);
    prm.add_initializeRequest(CheckRequest);

posted @ 2011-03-16 13:10  陈同学  阅读(1333)  评论(0编辑  收藏  举报