简介
UpdatePanel是AJAX中的一个很实用的控件,它可以用来创建丰富的局部更新Web应用程序,它的强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。
定义
下面是UpdatePanel控件的定义:
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <!----> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger /> <asp:PostBackTrigger /> </Triggers> </asp:UpdatePanel>
重要属性
属性1:ChildrenAsTriggers
当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。
属性2:RenderMode
表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>,Inline表示<span>。
属性3:UpdateMode
表示UpdatePanel的更新模式,有两个选项:Always和Conditional。Always是不管有没有Trigger,其他控件都将更新该UpdatePanel,Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。
工作原理
UpdatePanel的工作依赖于ScriptManager服务端控件和客户端PageRequestManager类,当ScriptManager中允许页面局部更新时,它会以异步的方式回传给服务器,与传统的整页回传方式不同的是只有包含在UpdatePanel中的页面部分会被更新,在从服务端返回HTML之后,PageRequestManager会通过操作DOM对象来替换需要更新的代码片段。
例子
根据所学到的知识,做了一个UpdatePanel控件的小demo,代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="test2.WebForm1" %> <!DOCTYPE html> <script runat="server"> void Button1_Click(object sender,EventArgs e) { this.Label1.Text = "当前时间为:" + System.DateTime.Now.ToString(); } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server"> <title>UpdatePanel Trigger Sample</title> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> </div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div> <asp:Button ID="Button1" runat="server" Text="更新当前时间" OnClick="Button1_Click"/> <br /> <asp:Label ID="Label1" runat="server" Text="" Font-Bold="True" Font-Size="Large"></asp:Label></div> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="Button1"/> </Triggers> </asp:UpdatePanel> </form> </body> </html>
其实现的效果:
每当点击“更新当前时间”按钮,其下的时间便会更新为当前时间,而不用刷新整个页面。
AJAX学习的是王兴魁的视频,经师傅点播学习了这个控件的使用,通过小例子的实践感觉很实用,而且有很多优势,之后也会经常用到!