Ajax 异步回送没有页面闪烁,但这也是缺点,如果服务器端执行时间过长,客户端却得不到任何提示,用户可能会认为没有任何事情发生,所以在页面处理期间,给用户提示表示正在处理是一种友好的表现。
而本节就是利用 UpdateProgress 来实现的。
示例
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
protected void Button1_Click(object sender, EventArgs e)
{
DateTime now = DateTime.Now;
Label1.Text = now.ToString();
System.Threading.Thread.Sleep(3000);
}
- 我们单击按钮时,将显示 Loading...。
- 在 Button1_Click 方法中,System.Threading.Thread.Sleep(3000); 表示延迟 3 秒钟,这种延时在 ASP 中是没有的。
- 3 秒钟过后,Loading... 自动消失。
我们也可以用图片来代替 Loading... 显示得美观些,大多数情况下,我们不需要亲手制作这样一个图片,Ajaxload 这个网站专门用来在线生成这类图标。
UpdateProgress 常用属性
AssociatedUpdatePanelID 该 UpdateProgress 与哪一个 UpdatePanel 关联,默认与页面上所有的 UpdatePanel 关联,即任何一个 UpdatePanel 的异步回送都将触发 UpdateProgress 显示。
DisplayAfter 在事件触发多少毫秒后开始显示 UpdateProgress,默认值:500。
DynamicLayout 在 UpdateProgress 没有显示时,是否移除 UpdateProgress 在页面上占有的空间,可选值:true(默认值)、false。
相关阅读