updatepanel
ScriptManager和updatepanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功 能。
几个重要的属性:
ScriptManager控件的EnablePartialRendering属性:
True-实现页面的异步局部更新;False-实现全页面的刷新。
Updatepanel控件的RenderMode属性:
inline-UpdatePanel控件被解析成HTML的<span>标记;Block-UpdatePanel控件被解析成HTML控件的<DIV>。
UpdatePanel控件的UpdateMode属性:
Always-UpdatePanel页面上任何一处发生的回发操作都会产生页局部更新;conditional-只在特定的情况下才产页面的回发,如执行UpdatePanel控件的update()方法或在指定的触发器的操作下。
UpdatePanel控件的childrenAsTrigger属性:
指示UpdatePanel内部控件引起的回发是否产生当前UpdatePanel控件的局部更新。如果UpdateMode设为Always的话,那ChildrenAsTrigger局性必须设为True,否则运行出错。
实例1:
1、updatepanel的updatemode设置为always,为默认值
效果:不管哪个按钮,都会触发更新
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<p>
</p>
<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>
实例2:
2、updatepanel的updatemode设置为conditional(ChildrenTriggers="false" 就是updatepanel中事件不触发更新)
效果:无论按哪个按钮都不更新
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<p>
</p>
<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>
3、触发器
Triggers:分别为AsyncPostBackTrigger和PostBackTrigger
AsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件;PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送
应用:
如果页面上有多个UpdatePanel控件,如果要实现外部的控件的回发引发指定UpdatePanel的更新的话,那应当为要实现刷新的UpdatePanel控件建立一个触发器。
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label3" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Button2" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
<asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="ButtonOut" />
需要注意的是:
把所有的UpdatePanel控件的UpdateMode设为"Conditional",这样才能够针对建有相关触发器的UpdatePanel更新。
一个UpdatePanel上可以建有多个触发器,实现在不同的情况下对该UpdatePanel控件内容的更新。
实例3:运行了发现点击button2的时候只更新了updatepanel内部的时间
<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>
实例4:
4、UpdatePanel的Update方法:强制某个UpdatePanel更新
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<% =DateTime.Now.ToString()%>
</ContentTemplate>
</asp:UpdatePanel>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" />
protected void Page_Load(object sender, EventArgs e)
{
//将控件注册为异步回发的触发器。
ScriptManager1.RegisterAsyncPostBackControl(this.Button1);
}
protected void Button1_Click(object sender, EventArgs e)
{
this.UpdatePanel1.Update();
}
5、Updateprogress
属性:
Dynamiclayout:隐藏时是否占位,默认值为true
displayAfter:延迟多少时间后显示,单位毫秒,默认值为500
AssociatedUpdatePanelID:关联的UpdatePanel的ID,默认为null。
总结:
UpdatePanel确实很实用,但是我们在使用过程中一定要注意它给我们带来的问题,可能弹出框不显示等,使用的话确保UpdatePanel包含的内容都是自己需要不更新的部分。
相关阅读
#pragma的详细用法 转载自:https://www.cnblogs.com/azraelly/archive/2012/07/05/2577334.html 每种C和C++的实现支持对其宿主机
1.函数原型: extern void *memcpy(void *dest, void *src, unsigned int count); 用法:#include <string.h>功能:由src所指内存区域
促销设计,其实并没有想得那么简单。促销实质上是一种沟通活动,即营销者(信息提供者或发送者)发出作为刺激消费的各种信息,把信息传递到
目前的项目要求尽量不要使用EJB来完成本来只有EJB才能实现的功能,比如声明式的事务管理。在做到异步处理某个业务的时候,发现Spring
做手工活赚钱靠谱吗?大部分在网上提出这样疑问的人都是想做点兼职赚点零花钱,尤其是一些女性朋友们,手工活是她们的强项,在没有找到其