首页 > 代码库 > Ajax系列之三:UpdatePanel

Ajax系列之三:UpdatePanel

         UpdatePanel控件也是Ajax里用得最多的控件之一,UpdatePanel控件是用来局部更新网页上的内容,网页上要局部更新的内容必须放在UpdatePanel控件里,他必须和上一次说的ScriptManager控件一起使用。现在来看UpdatePanel的属性

UpdatePanel重要的属性如下:

属性

说明

ChildrenAsTriggers

当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。

RenderMode

表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>,Inline表示<span>

UpdateMode

表示UpdatePanel的更新模式,有两个选项:Always和Conditional。Always是不管有没有Trigger,其他控件都将更新该UpdatePanel,Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。

 

          ChildrenAsTriggers:当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。

           RenderMode:表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>,Inline表示<span>,表示UpdatePanel最终呈现的HTML元素。UpdateMode:表示UpdatePanel的更新模式,有两个选项:Always和Conditional。Always是不管有没有Trigger,其他控件都将更新该UpdatePanel,Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。

          Contente Template:用来定义UpdatePanel的内容
         Triggers:分别为AsyncPostBackTrigger和PostBackTrigger
          AsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件;

          PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送。


现在我们来做一个简单的实例:

<span style="font-size:18px;">< %@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head runat="server">
     <title>Untitled Page</title>
     <style type="text/css">
          body { background-attachment:fixed;
              
               
                 background-image:url(Blue hills.jpg);
                 }
                 
          .style1
          {
                 background-position:top center;
          }
          
          
     </style>
 
 </head>
 <body  onl oad="oSpan.className='style1'" >
     <form id="form1" runat="server">
     <span style="font-size:14; width:250;" ID="oSpan"
         onm ouseover="this.className='style2'" onm ouseout="this.className='style1'"></span>
         <div>
             <asp:ScriptManager ID="ScriptManager1"     runat="server">    
               </asp:ScriptManager>
         </div>
            
         <asp:UpdatePanel ID="uid"  runat="server">
         
             <ContentTemplate>
             
                 <div >
                     <asp:Button ID="Button1" runat="server" Text="异步回送" OnClick="Button1_Click1" />  
                     <asp:Button ID="Button2" runat="server" Text="整页回送" OnClick="Button2_Click" /><br />
                     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="197px">
                         <Columns>
                             <asp:BoundField DataField="au_lname" FooterText="aaaa" HeaderText="au_lname" />
                         </Columns>
                     </asp:GridView>
                     <br />
                    <asp:Label ID="Label1" runat="server" Text="当前时间" Font-Bold="True" Font-Size="Large"></asp:Label>
                   </div>
             </ContentTemplate>
             <Triggers>
                 <asp:AsyncPostBackTrigger    ControlID="Button1" />
                 <asp:PostBackTrigger  ControlID="Button2" />
             </Triggers>
               
         </asp:UpdatePanel>
           <div id="div1" >
                </div>
         
         
     </form>
 </body>
 </html>
</span>

里面包含了一个Triggers,里面第一个属性AsyncPostBackTrigger指定Button1实现异步更新,而PostBackTrigger
指定Button2实现整页更新。


.CS代码为:

<span style="font-size:18px;"> protected void Button1_Click1(object sender, EventArgs e)
     {
   
         SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=;database=pubs");
         string sql1 = "select top 5 au_lname from authors ";
         SqlDataAdapter myAdapter = new SqlDataAdapter(sql1, conn);
         DataSet ds = new DataSet();
         myAdapter.Fill(ds, "bieminG");
         //来自web service的dataset,这里随便一个ds就可以;
         this.GridView1.DataSource = ds.Tables["bieminG"].DefaultView; ;
         this.GridView1.DataBind(); //数据绑定
     }
     protected void Button2_Click(object sender, EventArgs e)
     {
         this.Label1.Text = "11111";
     }
</span>
        UpdatePanel是一个很不错的控件,有了这个控件你可以不会写javascript代码,可以不动Ajax的机制,你就可以说你会用Ajax了!