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