asp.net UpdatePanel的简单用法「建议收藏」

asp.net UpdatePanel的简单用法「建议收藏」局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.netajax中的局部更新控件updatepanel的用法记录下,大家可以共同探讨UpdatePanel控制页面的局部更新,这个更新功能依赖于scriptManger控件的EnablePartialRendering属性,如果这个属性设置为false局部更新会失去作用(scriptManger控件的EnablePart

大家好,又见面了,我是你们的朋友全栈君。

局部更新是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://javaforall.net/163524.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]

    matlab控制倒立摆小车并绘制二维动态效果图[通俗易懂]clc;closeall;clearA=[0100;00-1.1760;0001;0018.2930];%设置倒立摆小车控制系统参数B=[0;1;0;-1.667];C=[1000;0010];G=[42.851.04;471.8322.39;0.9443.15;19.17464.64];K=[-9.1841-10.7148-63.8735-15.4258];sim(‘CAR.mdl’);%运行倒立摆小车控制系…

    2022年8月18日
    3
  • informix最新版本_sql权威指南 pdf

    informix最新版本_sql权威指南 pdf 最让人兴奋的是《informix实用全书》,PDF清晰版091229InformixV11.50.xC6        http://cid-62f8b4120839d1a2.skyd…Informix/2009-12-29InformixV11.50.TC6Windows32bitEnglish(CZ6QHEN)InformixV1…

    2022年10月20日
    2
  • 配置zabbix时启动失败解决办法

    配置zabbix时启动失败解决办法一开始按照这篇博客来配置zabbixhttps://blog.csdn.net/rujianxuezha/article/details/79842998启动zabbix时出现以下提示[root@www~]#systemctlstartzabbix-serverJobforzabbix-server.servicefailedbecauseaconfiguredresourc…

    2022年6月17日
    314
  • python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]

    python测试框架unittest如何设置用例优先级_python 的 unittest 测试框架中的测试依赖怎么解决呢…[通俗易懂]好啦,问题已解决,谢谢各位啦,感谢各位提出的思路,感谢@xiaoj(杰)和@keke在这里做个总结:xiaoj(杰)的方法defskipTest(value):defdeco(function):defwrapper(self,*args,**kwargs):ifnotgetattr(self,value):self.skipTest(‘跳过用例’)else:functio…

    2022年8月31日
    0
  • 网页设计入门教程_网页设计课程

    网页设计入门教程_网页设计课程做为前端开发小白级别的我还需要学习太多太多的东西,最近发觉前端开发的人员不仅要学会切美工给做好的psd的图片,还要会一些制作设计网页的图片,自己需要一些简单的图片不用等美工设计了,毕竟美工的工作也不轻松,俗话说技多不压身,多学一样总归没有坏处,所以上网找学习资料,发现这篇博客写的很好很详细,保留下来备用,方便日后的学习和复习支持原创:https://www.cnblogs.com/grenet…

    2022年9月2日
    3
  • jsonp跨域原理解析

    jsonp跨域原理解析背景:由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案。同源策略即:同一协议,同一域名,同一端口号。当其中一个不满足时,我们的请求即会发生跨域问题。举个简单的例子:http://www.abc.com:3000到https://www.abc.com:3000的请求会出现跨域(域名、端口相同但协议不同) http:/…

    2022年6月10日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号