UpdatePanel的简单用法(1)

         局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨
 
UpdatePanel控制页面的局部更新,这个更新功能依赖于scriptManger控件的EnablePartialRendering属性,如果这个属性设置为false局部更新会失去作用(scriptManger控件的EnablePartialRendering属性的默认值为true不必刻意去设置)
下面是一个完整的UpdatePanel的结构:

  1.     <asp:ScriptManager ID="ScriptManager1" runat="server" >
  2.     </asp:ScriptManager>
  3.     <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Always" RenderMode="Block">
  4.         <ContentTemplate>
  5.         </ContentTemplate>
  6.        <Triggers>
  7.        <asp:AsyncPostBackTrigger />
  8.        <asp:PostBackTrigger />
  9.        </Triggers>
  10.     </asp:UpdatePanel>
主要属性:

1,ChildrenAsTriggers : 内容模板内的子控件的回发是否更新本模板(和UpdateMode的conditional有关)
2,UpdateMode            : 内容模板的更新模式,有always和conditional俩种
                        always:每次ajax PostBack或者普通的PostBack都能引起panel的更新  如果UpdatePanel设置为Always时,不能使用上面的ChildrenAsTriggers属性,强行使用会报错,是updatepanel默认的更新模式,和设置trigger触发器没有直接的关系。
                        conditional:只有满足如下某一条件时才更新panel的内容    
                                    如果设置UpdateMode="conditional" ChildrenAsTriggers="false"时候,子控件不允许触发更新
                                 1),当panel中的某个控件引发PostBack时
                                 2),  当Panel指定的某个Trigger被引发时
3,RenderMode:       局部更新控件的呈现形式,俩中,Block(局部更新在客户端以div形式展现)和Inline(局部更新以span的形式展现在客户端)

子元素: 

1,contentTemplate: 局部更新控件的内容模板,可以在其中添加任何控件
2,Triggers:   局部更新的触发器,包括俩中:异步回发(AsyncPostBackTrigger) 用来实现局部更新。普通回发(PostBackTrigger)和普通的一养,不管是否使用了局部更新控件,都会引起页面的全部更新。

下面是几个简单的例子:

1,updatepanel的updatemode设置为always
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title>无标题页</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.     
  11.     </div>
  12.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  13.     </asp:ScriptManager>
  14.     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  15.     <ContentTemplate>
  16.     <% =DateTime.Now.ToString()%>
  17.         <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  18.     </ContentTemplate>
  19.     </asp:UpdatePanel>
  20.     <asp:Button ID="Button2" runat="server" Text="Button" />
  21.     </form>
  22. </body>
  23. </html>
不管哪个按钮,都会触发更新,只不过外面的按钮postback的时候页面显示回发而已 !

1,updatepanel的updatemode设置为conditional( ChildrenTriggers="false" 就是updatepanel中事件不触发更新)

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title>无标题页</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.     
  11.     </div>
  12.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  13.     </asp:ScriptManager>
  14.     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
  15.     <ContentTemplate>
  16.     <% =DateTime.Now.ToString()%>
  17.         <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  18.     </ContentTemplate>
  19.     </asp:UpdatePanel>
  20.     <asp:Button ID="Button2" runat="server" Text="Button" />
  21.     </form>
  22. </body>
  23. </html>

下面介绍下updatePanel的触发器Trigger

了解数据库的人应该对触发器这个概念比较清楚,Trigger对于UpdatePanel来说也是很关键的

开始简单介绍了UpdatePanel的俩中触发器asyncPostBackTrigger和PostBackTrigger的作用
这里用例子大概在稍微深入地介绍下:

1,普通回调触发器(PostBackTrigger)

PostBackTrigger主要针对UpdatePanel模板内的子控件,因为当子控件被触发时。它只会更新模版内的数据,模板外的控件不会发生变化.当需要更新全局 内容的时候就可以通过PostBackTrigger触发器来实现页面的全部回调。

下面是简单例子:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title>无标题页</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <div>
  10.     
  11.     </div>
  12.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  13.     </asp:ScriptManager>
  14.     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  15.     <ContentTemplate>
  16.     <% =DateTime.Now.ToString()%>
  17.         <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  18.     </ContentTemplate>
  19.     <Triggers>
  20. <!--下面的注释掉,点击updatePanel内的button则只更新Panel内的时间,取消注释责全部更新-->
  21.    <!-- <asp:PostBackTrigger ControlID="Button1"/>-->
  22.     </Triggers>
  23.     </asp:UpdatePanel>
  24.     <br />
  25.      <% =DateTime.Now.ToString()%>
  26.     <asp:Button ID="Button2" runat="server" Text="Button" />
  27.     </form>
  28. </body>
  29. </html>

2,异步回调触发器(AsyncPostBackTrigger)

是实现局部更新的关键,在触发器内定义引起回发的控件和事件

例:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title>无标题页</title>
  6. </head>
  7. <body>
  8.     <form id="form1" runat="server">
  9.     <asp:ScriptManager ID="ScriptManager1" runat="server">
  10.     </asp:ScriptManager>
  11.     <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  12.     <ContentTemplate>
  13.     <% =DateTime.Now.ToString()%>
  14.     </ContentTemplate>
  15.     <Triggers>
  16.    <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
  17.     </Triggers>
  18.     </asp:UpdatePanel>
  19.     <br />
  20.      <% =DateTime.Now.ToString()%>
  21.     <asp:Button ID="Button2" runat="server" Text="Button" />
  22.     </form>
  23. </body>
  24. </html>
运行了发现点击button2的时候只更新了 updatepanel内部的时间
上面的例子也可以动态更新UpdatePanel的一些源代码:
具体例子就不写了下面 大概写点主要代码:

  1.     protected void Page_Load(object sender, EventArgs e)
  2.     {
  3.            //获取更新控件儿
  4.             UpdatePanel mapanel = UpdatePanel1;
  5.           //设置触发模式
  6.             mapanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
  7.            //显示时间
  8.             Label1.Text = DateTime.Now.ToString();
  9.             //添加触发
  10.             AsyncPostBackTrigger tri = new AsyncPostBackTrigger();
  11.             tri.ControlID = "Button2";
  12.             tri.EventName = "Click";
  13.             mapanel.Triggers.Add(tri);
  14.      
  15.     }



先记录这些~还望多多大虾们多多指教 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值