asp.net UpdatePanel的简单用法

局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法记录下,大家可以共同探讨

UpdatePanel控制页面的局部更新,这个更新功能依赖于scriptManger控件的EnablePartialRendering属性,如果这个属性设置为false局部更新会失去作用(scriptManger控件的EnablePartialRendering属性的默认值为true不必刻意去设置)
下面是一个完整的UpdatePanel的结构:

复制代码 代码如下:
<asp:ScriptManager ID="ScriptManager1" runat="server" >
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="true" UpdateMode="Always" RenderMode="Block">
<ContentTemplate>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger />
<asp:PostBackTrigger />
</Triggers>
</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

复制代码 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>

不管哪个按钮,都会触发更新,只不过外面的按钮postback的时候页面显示回发而已 !
1,updatepanel的updatemode设置为conditional( ChildrenTriggers="false" 就是updatepanel中事件不触发更新)

复制代码 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="false">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>

下面介绍下updatePanel的触发器Trigger
了解数据库的人应该对触发器这个概念比较清楚,Trigger对于UpdatePanel来说也是很关键的
开始简单介绍了UpdatePanel的俩中触发器asyncPostBackTrigger和PostBackTrigger的作用
这里用例子大概在稍微深入地介绍下:
1,普通回调触发器(PostBackTrigger)
PostBackTrigger主要针对UpdatePanel模板内的子控件,因为当子控件被触发时。它只会更新模版内的数据,模板外的控件不会发生变化.当需要更新全局 内容的时候就可以通过PostBackTrigger触发器来实现页面的全部回调。
下面是简单例子:

复制代码 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button1" runat="server" Text="UpdatePanelButton" />
</ContentTemplate>
<Triggers>
<!--下面的注释掉,点击updatePanel内的button则只更新Panel内的时间,取消注释责全部更新-->
<!-- <asp:PostBackTrigger ControlID="Button1"/>-->
</Triggers>
</asp:UpdatePanel>
<br />
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>

2,异步回调触发器(AsyncPostBackTrigger)
是实现局部更新的关键,在触发器内定义引起回发的控件和事件
例:

复制代码 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<br />
<% =DateTime.Now.ToString()%>
<asp:Button ID="Button2" runat="server" Text="Button" />
</form>
</body>
</html>

运行了发现点击button2的时候只更新了 updatepanel内部的时间
上面的例子也可以动态更新UpdatePanel的一些源代码:
具体例子就不写了下面 大概写点主要代码:

复制代码 代码如下:
protected void Page_Load(object sender, EventArgs e)
{
//获取更新控件儿
UpdatePanel mapanel = UpdatePanel1;
//设置触发模式
mapanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
//显示时间
Label1.Text = DateTime.Now.ToString();
//添加触发
AsyncPostBackTrigger tri = new AsyncPostBackTrigger();
tri.ControlID = "Button2";
tri.EventName = "Click";
mapanel.Triggers.Add(tri);
}

转载于:https://www.cnblogs.com/liangsetian/archive/2011/06/03/2072034.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端需要了解的http知识

http基本概念 http是一个无状态 &#xff0c;无连接的基于TCP协议的单向应用层协议 一、无连接 无连接即每次链接只处理一个请求&#xff0c;请求和应答后就断开链接 二、无状态 http的每次请求都是独立的&#xff0c;不相关的&#xff0c;协议对事物处理没有记忆功能。 HTTP无…

局域网中设备的管理之StackCluster

局域网中设备的管理通常采用 stack 、cluster和snmp等方法。 下面我们来讨论一下stack 和cluster。Stack 也叫作堆叠。堆叠是由一些通过堆叠口相连的以太网交换机组成的一个管理域&#xff0c;其中包括一个主交换机和若干个从交换机。堆叠在一起的以太网交换机可以看作为一个设…

SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#)

最近在做邮件发送接口 把遇到的问题和解决方法告诉大家 希望对了解邮件的人有所帮助 原程序部分代码如下 //设置邮件信息 发件人地址、收件人地址、标题、主题 MailMessage mail new MailMessage("xxxxxxxsina.com", "zzzzzzzsina.com", "标题…

google Chrome 浏览器源码地址地址!

1. Google Chrome 源码 SVN 地址&#xff1a;http://src.chromium.org/svn。包含有 Chrome、Gears、Webkit、GCC 等源码以及编译依赖工具。Chrome 浏览器项目的源码&#xff0c;位于目录 http://src.chromium.org/svn/trunk/src/chrome/  2. Google Chrome 源码 Web 浏览地址…

3DMed

1. 当前 小论文&#xff0c; before 5.1 2. linux 需要十天的时间&#xff0c; 5月上旬 3. 中下旬写代码&#xff0c;提取算法 。 6月 三维 建模 7月仿真 4. very helpfully , i found this professional open software. Links 3DMed (www.3dmed.net) www.fingerpass.net MOSE…

【图像算法】彩色图像分割专题五:提取彩色图像上特定色彩

【图像算法】彩色图像分割专题五&#xff1a;提取彩色图像特定色彩 SkySeraph Jun 8th 2011 HQU Email&#xff1a;zgzhaobogmail.com QQ&#xff1a;452728574 Latest Modified Date&#xff1a;Jun 8th 2011 HQU 一 原理及说明&#xff1a; 1 RGB(red,green,blue)模式是…

标记一下 两个Google Chrome 源码研究的网站

大坡3D软件开发&#xff1a; http://blog.csdn.net/caimouse/archive/2008/09/07/2893806.aspx Venus神庙&#xff1a; http://www.cnblogs.com/duguguiyu/archive/2008/10/02/1303095.html

k8s基础学习-存储卷

存储卷的几种类型&#xff1a; emptyDir -- 用于存储临时数据的简单空目录 hostPath -- 用于将目录从工作节点的文件系统挂载到pod中 gitRepo -- 通过检出Git仓库的内容来初始化的卷 nfs -- 挂载到pod中的NFS共享卷 configMap&#xff0c;secret&#xff0c;downwardAPI--用于将…

SharePoint里如何设置People picker值为当前登录用户值

摘要&#xff1a; 相信很多朋友都遇到过需要将某个People类型的字段值设置为当前登录用户的情况而且已经给出了解决方案&#xff0c;因此本文没有什么新意&#xff0c;算法上也比较冗余&#xff0c;仅仅在博客里算作知识的备份。 思路&#xff1a; 在画面的右上角有一个欢迎控件…

SQL存储过程的导入导出

转贴网址&#xff1a;http://haitao.javaeye.com/blog/782365 近日在研究SQL的存储过程&#xff0c;这里我陆续将我在使用存储过程中碰到的问题及解决办法发布到网上&#xff0c;请各位大虾指正。   SqlServer存储过程的导出导入   打开“企业管理器”&#xff0c;选择需要…

osg指定向量旋转指定角度

向量AB&#xff0c;沿着n旋转10度 osg::Vec3 left AB*osg::Matrix::rotate(osg::inDegrees(10), n); osg::Vec3 right AB*osg::Matrix::rotate(osg::inDegrees(-10), n);//right-left 特殊情况下&#xff0c;可以使用向量叉乘实现&#xff0c;例如旋转90度 osg::Vec3 left n…

android webservice 简单应用

http://www.cnblogs.com/ghj1976/archive/2011/04/26/2028904.html

《Linux内核完全注释》《完全剖析》 » 阅读本书所需的基础知识 -- 再次强调。

转贴网址&#xff1a;http://www.oldlinux.org/oldlinux/viewthread.php?tid2551&extrapage%3D1 [这个贴子最后由redgrid在 2006/08/09 00:45pm 第 17 次编辑]Linux 0.11虽然不是什么“珠穆朗玛峰”&#xff0c;但它肯定还是“华山”或“泰山”。虽然有路但你还是需要最基…

Linux 系统下载网址

网址&#xff1a;http://download.chinaunix.net/disc/linux/

Linux tp5伪静态设置

.htaccess文件写入下面规则 <IfModule mod_rewrite.c>Options FollowSymlinksRewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]</IfModule> 转载于:https://www.cnblogs.com/d…

IT绩效管理消除IT与业务之间的隔阂

近日&#xff0c;惠普公司公布了一项针对亚太地区用户IT绩效考核方式的调查结果&#xff1a;91%的企业高管认为IT绩效考核是一个重要工具&#xff0c;但实际上只有50%的高管在做决策时参考了IT绩效考核数据。企业对IT绩效考核的期望值与考核的实际执行之间为何会有如此大的落差…

WinCE下监视设备插拔的参考代码

在一些项目中&#xff0c;系统需要实时监测U盘或SD卡的插入拔出。当文件系统加载成功后通知特定应用程序&#xff0c;启动自动播放功能。在U盘或其他外部存储设备移除时&#xff0c;也需要立即通知相应的程序&#xff0c;停止访问这些设备&#xff0c;如播放其中的音视频文件&a…

ubuntu命令行登录

网址&#xff1a;http://hi.baidu.com/tingphoon/blog/item/9f03b41c7973a58c86d6b635.html 方法一&#xff1a; 转到kubuntu之前曾经学习了一下&#xff0c;了解到ubuntu在6.10开始用upstart替代init&#xff0c;主要脚本都在/etc/event.d下面&#xff0c;默认情况下/etc下没…

圆桌论坛对话:互联网产业革命

2019独角兽企业重金招聘Python工程师标准>>> 圆桌论坛对话&#xff1a;互联网产业革命 2012年12月18日&#xff0c;2012中国互联网经济论坛即将召开在北京万豪酒店举行。本次大会以“得势者、得天下”为主题&#xff0c;着眼于网络广告与新媒体&#xff0c;深度聚焦…

__va_rounded_size

Linux内核STDarg.h 中 #define __va_rounded_size(TYPE) / (((sizeof (TYPE) sizeof (int) - 1) / sizeof (int)) * sizeof (int)) 求Type 类型所占有的字节数。以int为最小单元&#xff0c;