微软AJAX虽然是过时的玩意,但是得维护公司之前的老项目,转载看看。

  1. 局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨
  2.  
  3. UpdatePanel控制页面的局部更新,这个更新功能依赖于scriptManger控件的EnablePartialRendering属性,如果这个属性设置为false局部更新会失去作用(scriptManger控件的EnablePartialRendering属性的默认值为true不必刻意去设置)
  4. 下面是一个完整的UpdatePanel的结构:
  5.  
  6. <asp:ScriptManager ID="ScriptManager1" runat="server" >
  7. </asp:ScriptManager>
  8. <asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Always" RenderMode="Block">
  9. <ContentTemplate>
  10. </ContentTemplate>
  11. <Triggers>
  12. <asp:AsyncPostBackTrigger />
  13. <asp:PostBackTrigger />
  14. </Triggers>
  15. </asp:UpdatePanel>
  16. 主要属性:
  17.  
  18. ChildrenAsTriggers : 内容模板内的子控件的回发是否更新本模板(和UpdateModeconditional有关)
  19. UpdateMode : 内容模板的更新模式,有alwaysconditional俩种
  20. always:每次ajax PostBack或者普通的PostBack都能引起panel的更新 如果UpdatePanel设置为Always时,不能使用上面的ChildrenAsTriggers属性,强行使用会报错,是updatepanel默认的更新模式,和设置trigger触发器没有直接的关系。
  21. conditional:只有满足如下某一条件时才更新panel的内容
  22. 如果设置UpdateMode="conditional" ChildrenAsTriggers="false"时候,子控件不允许触发更新
  23. ),当panel中的某个控件引发PostBack
  24. ), Panel指定的某个Trigger被引发时
  25. RenderMode 局部更新控件的呈现形式,俩中,Block(局部更新在客户端以div形式展现)和Inline(局部更新以span的形式展现在客户端)
  26.  
  27. 子元素:
  28.  
  29. ,contentTemplate: 局部更新控件的内容模板,可以在其中添加任何控件
  30. Triggers: 局部更新的触发器,包括俩中:异步回发(AsyncPostBackTrigger) 用来实现局部更新。普通回发(PostBackTrigger)和普通的一养,不管是否使用了局部更新控件,都会引起页面的全部更新。
  31.  
  32. 下面是几个简单的例子:
  33.  
  34. ,updatepanelupdatemode设置为always
  35. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  36. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  37. <html xmlns="http://www.w3.org/1999/xhtml">
  38. <head runat="server">
  39. <title>无标题页</title>
  40. </head>
  41. <body>
  42. <form id="form1" runat="server">
  43. <div>
  44.  
  45. </div>
  46. <asp:ScriptManager ID="ScriptManager1" runat="server">
  47. </asp:ScriptManager>
  48. <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  49. <ContentTemplate>
  50. <% =DateTime.Now.ToString()%>
  51. <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  52. </ContentTemplate>
  53. </asp:UpdatePanel>
  54. <asp:Button ID="Button2" runat="server" Text="Button" />
  55. </form>
  56. </body>
  57. </html>
  58. 不管哪个按钮,都会触发更新,只不过外面的按钮postback的时候页面显示回发而已
  59.  
  60. ,updatepanelupdatemode设置为conditional( ChildrenTriggers="false" 就是updatepanel中事件不触发更新)
  61.  
  62. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  63. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  64. <html xmlns="http://www.w3.org/1999/xhtml">
  65. <head runat="server">
  66. <title>无标题页</title>
  67. </head>
  68. <body>
  69. <form id="form1" runat="server">
  70. <div>
  71.  
  72. </div>
  73. <asp:ScriptManager ID="ScriptManager1" runat="server">
  74. </asp:ScriptManager>
  75. <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
  76. <ContentTemplate>
  77. <% =DateTime.Now.ToString()%>
  78. <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  79. </ContentTemplate>
  80. </asp:UpdatePanel>
  81. <asp:Button ID="Button2" runat="server" Text="Button" />
  82. </form>
  83. </body>
  84. </html>
  85.  
  86. 下面介绍下updatePanel的触发器Trigger
  87.  
  88. 了解数据库的人应该对触发器这个概念比较清楚,Trigger对于UpdatePanel来说也是很关键的
  89.  
  90. 开始简单介绍了UpdatePanel的俩中触发器asyncPostBackTriggerPostBackTrigger的作用
  91. 这里用例子大概在稍微深入地介绍下:
  92.  
  93. ,普通回调触发器(PostBackTrigger)
  94.  
  95. PostBackTrigger主要针对UpdatePanel模板内的子控件,因为当子控件被触发时。它只会更新模版内的数据,模板外的控件不会发生变化.当需要更新全局 内容的时候就可以通过PostBackTrigger触发器来实现页面的全部回调。
  96.  
  97. 下面是简单例子:
  98.  
  99. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  100. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  101. <html xmlns="http://www.w3.org/1999/xhtml">
  102. <head runat="server">
  103. <title>无标题页</title>
  104. </head>
  105. <body>
  106. <form id="form1" runat="server">
  107. <div>
  108.  
  109. </div>
  110. <asp:ScriptManager ID="ScriptManager1" runat="server">
  111. </asp:ScriptManager>
  112. <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  113. <ContentTemplate>
  114. <% =DateTime.Now.ToString()%>
  115. <asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
  116. </ContentTemplate>
  117. <Triggers>
  118. <!--下面的注释掉,点击updatePanel内的button则只更新Panel内的时间,取消注释责全部更新-->
  119. <!-- <asp:PostBackTrigger ControlID="Button1"/>-->
  120. </Triggers>
  121. </asp:UpdatePanel>
  122. <br />
  123. <% =DateTime.Now.ToString()%>
  124. <asp:Button ID="Button2" runat="server" Text="Button" />
  125. </form>
  126. </body>
  127. </html>
  128.  
  129. ,异步回调触发器(AsyncPostBackTrigger)
  130.  
  131. 是实现局部更新的关键,在触发器内定义引起回发的控件和事件
  132.  
  133. 例:
  134.  
  135. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
  136. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  137. <html xmlns="http://www.w3.org/1999/xhtml">
  138. <head runat="server">
  139. <title>无标题页</title>
  140. </head>
  141. <body>
  142. <form id="form1" runat="server">
  143. <asp:ScriptManager ID="ScriptManager1" runat="server">
  144. </asp:ScriptManager>
  145. <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
  146. <ContentTemplate>
  147. <% =DateTime.Now.ToString()%>
  148. </ContentTemplate>
  149. <Triggers>
  150. <asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
  151. </Triggers>
  152. </asp:UpdatePanel>
  153. <br />
  154. <% =DateTime.Now.ToString()%>
  155. <asp:Button ID="Button2" runat="server" Text="Button" />
  156. </form>
  157. </body>
  158. </html>
  159. 运行了发现点击button2的时候只更新了 updatepanel内部的时间
  160. 上面的例子也可以动态更新UpdatePanel的一些源代码:
  161. 具体例子就不写了下面 大概写点主要代码:
  162.  
  163. protected void Page_Load(object sender, EventArgs e)
  164. {
  165. //获取更新控件儿
  166. UpdatePanel mapanel = UpdatePanel1;
  167. //设置触发模式
  168. mapanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
  169. //显示时间
  170. Label1.Text = DateTime.Now.ToString();
  171. //添加触发
  172. AsyncPostBackTrigger tri = new AsyncPostBackTrigger();
  173. tri.ControlID = "Button2";
  174. tri.EventName = "Click";
  175. mapanel.Triggers.Add(tri);
  176.  
  177. }
  178.  

UpdatePanel的简单用法(转)的更多相关文章

  1. CATransition(os开发之画面切换) 的简单用法

    CATransition 的简单用法 //引进CATransition 时要添加包“QuartzCore.framework”,然后引进“#import <QuartzCore/QuartzCo ...

  2. jquery.validate.js 表单验证简单用法

    引入jquery.validate.js插件以及Jquery,在最后加上这个插件的方法名来引用.$('form').validate(); <!DOCTYPE html PUBLIC " ...

  3. NSCharacterSet 简单用法

    NSCharacterSet 简单用法 NSCharacterSet其实是许多字符或者数字或者符号的组合,在网络处理的时候会用到 NSMutableCharacterSet *base = [NSMu ...

  4. [转]Valgrind简单用法

    [转]Valgrind简单用法 http://www.cnblogs.com/sunyubo/archive/2010/05/05/2282170.html Valgrind的主要作者Julian S ...

  5. Oracle的substr函数简单用法

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  6. Ext.Net学习笔记19:Ext.Net FormPanel 简单用法

    Ext.Net学习笔记19:Ext.Net FormPanel 简单用法 FormPanel是一个常用的控件,Ext.Net中的FormPanel控件同样具有非常丰富的功能,在接下来的笔记中我们将一起 ...

  7. TransactionScope简单用法

    记录TransactionScope简单用法,示例如下: void Test() { using (TransactionScope scope = new TransactionScope()) { ...

  8. WPF之Treeview控件简单用法

    TreeView:表示显示在树结构中分层数据具有项目可展开和折叠的控件 TreeView 的内容是可以包含丰富内容的 TreeViewItem 控件,如 Button 和 Image 控件.TreeV ...

  9. listActivity和ExpandableListActivity的简单用法

    http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...

随机推荐

  1. Linux驱动中completion接口浅析(wait_for_complete例子,很好)【转】

    转自:http://blog.csdn.net/batoom/article/details/6298267 completion是一种轻量级的机制,它允许一个线程告诉另一个线程工作已经完成.可以利用 ...

  2. Java生产者消费者模型

    在Java中线程同步的经典案例,不同线程对同一个对象同时进行多线程操作,为了保持线程安全,数据结果要是我们期望的结果. 生产者-消费者模型可以很好的解释这个现象:对于公共数据data,初始值为0,多个 ...

  3. 关于JDK,tomcat,MyEclipse的配置

    1.下载安装JDK 在自定义安装路径时,jdk和之后的jre文件夹是属于平行结构,我的安装路径为:D:\jdk\jdk1.6.0_43和D:\jdk\jre6 然后是对环境变量的配置, 计算机→属性→ ...

  4. centos7.0 没有netstat 和 ifconfig命令问题

    yum install wget 运行  yum install net-tools  就OK了 默认CentOS已经安装了OpenSSH,即使你是最小化安装也是如此.所以这里就不介绍OpenSSH的 ...

  5. Volley的基本用法

    1. Volley简介 我们平时在开发Android应用的时候不可避免地都需要用到网络技术,而多数情况下应用程序都会使用HTTP协议来发送和接收网络数据.Android系统中主要提供了两种方式来进行H ...

  6. 关于ADO.NET@SQL Server&SqlDataReader

    先说基础的,说基础的明白了再深的也是一样的.SQL是关系型数据库,所以就决定了对其操作的时候ADO的一些类要相互联系,Connection 类Command对象(ExecuteReader()方法.E ...

  7. 微信公众平台自定义菜单PHP开发

    微信公众平台自定义菜单PHP开发,微信公众平台自定义菜单是如何实现的呢?其实很简单,首先在微信公众平台升级为服务号,获取appid和appsecret,然后根据这2个参数获取access_token, ...

  8. python: indentationerror: unexpected indent

    以后遇到了IndentationError: unexpected indent你就要知道python编译器是在告诉你“Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题,你需要检查下t ...

  9. Alarm(硬件时钟) init

    http://blog.csdn.net/angle_birds/article/details/17302297 Alarm就是一个硬件时钟,前面我们已经知道它提供了一个定时器,用于把设备从睡眠状态 ...

  10. 20151124001 关闭C#主窗体弹出是否关闭对话框

    关闭C#主窗体弹出是否关闭对话框 private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)        {   ...