ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)

article/2025/11/7 0:57:23

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel简单的使用方法(第一篇)。

 

主要内容

1UpdatePanel控件概述

2UpdatePanel工作原理

3ContentTemplate属性

4ContentTemplateContainer属性

5Triggers属性

 

一.UpdatePanel控件概述

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。通过本文来学习一下UpdatePanel工作原理和使用方法。简单的UpdatePanel定义如下:

None.gif < asp:UpdatePanel  ID ="UpdatePanel1"  runat ="server" >
None.gif
None.gif    
< ContentTemplate >
None.gif
None.gif        
<!-- dot.gif -->
None.gif
None.gif    
</ ContentTemplate >
None.gif
None.gif    
< Triggers >
None.gif
None.gif        
< asp:AsyncPostBackTrigger  />
None.gif
None.gif        
< asp:PostBackTrigger  />
None.gif
None.gif    
</ Triggers >
None.gif
None.gif
</ asp:UpdatePanel >

UpdatePanel重要的属性如下:

属性

说明

ChildrenAsTriggers

UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。

RenderMode

表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>Inline表示<span>

UpdateMode

表示UpdatePanel的更新模式,有两个选项:AlwaysConditionalAlways是不管有没有Trigger,其他控件都将更新该UpdatePanelConditional表示只有当前UpdatePanelTrigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel

 

二.UpdatePanel工作原理

UpdatePanel的工作依赖于ScriptManager服务端控件(ASP.NET AJAX入门系列(2):使用ScriptManager控件)和客户端PageRequestManager类(Sys.WebForms.PageRequestManager,在后面的客户端类中会专门说到),当ScriptManager中允许页面局部更新时,它会以异步的方式回传给服务器,与传统的整页回传方式不同的是只有包含在UpdatePanel中的页面部分会被更新,在从服务端返回HTML之后,PageRequestManager会通过操作DOM对象来替换需要更新的代码片段。

看一下官方网站提供的UpdatePanel工作原理图:

三.ContentTemplate属性

Contente Template标签用来定义UpdatePanel的内容,在它里面可以放任何ASP.NET元素。如果你想要使用编程的手法来控制UpdatePanel中的内容,就需要使用ContenteTemplateContainer,下面会说到,先来看一个简单的ContentTemplate的例子。

None.gif < asp:UpdatePanel  ID ="UpdatePanel1"  runat ="server" >
None.gif
None.gif    
< ContentTemplate >
None.gif
None.gif        
< asp:Calendar  ID ="Calendar1"  ShowTitle ="True"  runat ="server"   />
None.gif
None.gif        
< div >
None.gif
None.gif            Background:
None.gif
None.gif            
< br  />
None.gif
None.gif            
< asp:DropDownList  ID ="ColorList"  AutoPostBack ="True"  OnSelectedIndexChanged ="DropDownSelection_Change"
None.gif
None.gif                runat
="server" >
None.gif
None.gif                
< asp:ListItem  Selected ="True"  Value ="White" >  
None.gif
None.gif                White 
</ asp:ListItem >
None.gif
None.gif                
< asp:ListItem  Value ="Silver" >  
None.gif
None.gif                Silver 
</ asp:ListItem >
None.gif
None.gif                
< asp:ListItem  Value ="DarkGray" >  
None.gif
None.gif                Dark Gray 
</ asp:ListItem >
None.gif
None.gif                
< asp:ListItem  Value ="Khaki" >  
None.gif
None.gif                Khaki 
</ asp:ListItem >
None.gif
None.gif                
< asp:ListItem  Value ="DarkKhaki" >  D
None.gif
None.gif                ark Khaki 
</ asp:ListItem >
None.gif
None.gif            
</ asp:DropDownList >
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ ContentTemplate >
None.gif
None.gif
</ asp:UpdatePanel >

事件代码:

ExpandedBlockStart.gif ContractedBlock.gif < script  runat ="server" > dot.gif
InBlock.gif
InBlock.gif    
void DropDownSelection_Change(Object sender, EventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        Calendar1.DayStyle.BackColor 
=
InBlock.gif
InBlock.gif            System.Drawing.Color.FromName(ColorList.SelectedItem.Value);
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif
None.gif
</ script >

四.ContentTemplateContainer属性

如果要使用编程的手法去设置UpdatePanel中的内容,需要创建一个UpdatePanel,并且添加控件到ContentTemplateContainer,而不能直接添加控件到ContentTemplate,如果想直接设置ContentTemplate,则需要编写一个自定义的Template,并去实现位于System.Web.UI命名空间下的接口ITemplate。看一个简单的来自于官方网站的例子:

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
< script  runat ="server" > dot.gif
InBlock.gif
InBlock.gif    protected 
void Page_Load(object sender, EventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        UpdatePanel up1 
= new UpdatePanel();
InBlock.gif
InBlock.gif        up1.ID 
= "UpdatePanel1";
InBlock.gif
InBlock.gif        up1.UpdateMode 
= UpdatePanelUpdateMode.Conditional;
InBlock.gif
InBlock.gif        Button button1 
= new Button();
InBlock.gif
InBlock.gif        button1.ID 
= "Button1";
InBlock.gif
InBlock.gif        button1.Text 
= "Submit";
InBlock.gif
InBlock.gif        button1.Click 
+= new EventHandler(Button_Click);
InBlock.gif
InBlock.gif        Label label1 
= new Label();
InBlock.gif
InBlock.gif        label1.ID 
= "Label1";
InBlock.gif
InBlock.gif        label1.Text 
= "A full page postback occurred.";
InBlock.gif
InBlock.gif        up1.ContentTemplateContainer.Controls.Add(button1);
InBlock.gif
InBlock.gif        up1.ContentTemplateContainer.Controls.Add(label1);
InBlock.gif
InBlock.gif        Page.Form.Controls.Add(up1);
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    protected 
void Button_Click(object sender, EventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        ((Label)Page.FindControl(
"Label1")).Text = "Panel refreshed at " +
InBlock.gif
InBlock.gif            DateTime.Now.ToString();
InBlock.gif
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif
None.gif
</ script >
None.gif
None.gif
< html  xmlns ="http://www.w3.org/1999/xhtml" >
None.gif
None.gif
< head  id ="Head1"  runat ="server" >
None.gif
None.gif    
< title > UpdatePanel Added Programmatically Example </ title >
None.gif
None.gif
</ head >
None.gif
None.gif
< body >
None.gif
None.gif    
< form  id ="form1"  runat ="server" >
None.gif
None.gif        
< div >
None.gif
None.gif            
< asp:ScriptManager  ID ="TheScriptManager"
None.gif
None.gif                               runat
="server"   />
None.gif
None.gif        
</ div >
None.gif
None.gif    
</ form >
None.gif
None.gif
</ body >
None.gif
None.gif
</ html >


五.Triggers属性

ASP.NET AJAX中有两种Triggers:分别为AsyncPostBackTriggerPostBackTriggerAsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件;PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送。这一点跟Atlas有很大的区别,大家需要注意。看一个小例子,虽然两个Button都放在了UpdatePanel中,但是由于在PostBackTrigger中指定了Button2,所以它使用的仍然是整页回送。

ExpandedBlockStart.gif ContractedBlock.gif <% dot.gif @ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2"  %>
None.gif
ExpandedBlockStart.gifContractedBlock.gif
< script  runat ="server" > dot.gif
InBlock.gif
InBlock.gif    
void Button1_Click(object sender, EventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.Label1.Text = "更新时间:" + System.DateTime.Now.ToString();
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
void Button2_Click(object sender, EventArgs e)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
this.Label1.Text = "更新时间:" + System.DateTime.Now.ToString();
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif
None.gif
</ script >
None.gif
None.gif
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
None.gif
None.gif
< head  runat ="server" >
None.gif
None.gif    
< title > UpdatePanel Trigger Sample </ title >
None.gif
None.gif
</ head >
None.gif
None.gif
< body >
None.gif
None.gif    
< form  id ="form1"  runat ="server" >
None.gif
None.gif    
< div >
None.gif
None.gif        
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server" >
None.gif
None.gif        
</ asp:ScriptManager >
None.gif
None.gif    
</ div >
None.gif
None.gif        
< asp:UpdatePanel  ID ="UpdatePanel1"  runat ="server" >
None.gif
None.gif            
< ContentTemplate >
None.gif
None.gif                
< div >
None.gif
None.gif                    
< asp:Button  ID ="Button1"  runat ="server"  Text ="异步回送"  OnClick ="Button1_Click" /> &nbsp;&nbsp;
None.gif
None.gif                    
< asp:Button  ID ="Button2"  runat ="server"  Text ="整页回送"  OnClick ="Button2_Click" />< br  />
None.gif
None.gif                    
< br  />
None.gif
None.gif                    
< asp:Label  ID ="Label1"  runat ="server"  Text ="当前时间"  Font-Bold ="True"  Font-Size ="Large" ></ asp:Label ></ div >
None.gif
None.gif            
</ ContentTemplate >
None.gif
None.gif            
< Triggers >
None.gif
None.gif                
< asp:AsyncPostBackTrigger  ControlID ="Button1" />
None.gif
None.gif                
< asp:PostBackTrigger  ControlID ="Button2"   />
None.gif
None.gif            
</ Triggers >
None.gif
None.gif        
</ asp:UpdatePanel >
None.gif
None.gif    
</ form >
None.gif
None.gif
</ body >
None.gif
None.gif
</ html >


(未完待续)
示例代码下载:http://files.cnblogs.com/Terrylee/ASPNETAJAXUpdatePanelDemo1


http://chatgpt.dhexx.cn/article/lfwCVlur.shtml

相关文章

UpdatePanel的用法及 UpdatePanel与JS冲突的解决方法

UpdatePanel的用法 ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异 步局部更新区域&#xff0c;它必须依赖于ScriptManager存在&#xff0c;因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功 能。…

Java定时器 @Scheduled注解的使用

1.定时器Scheduled简介 Scheduled注解可以用于做定时任务&#xff0c;再方法上加上Scheduled注解&#xff0c;可以将这个方法定义为一个任务发放&#xff0c;可以搭配cron表达式进行任务的控制。 开启定时任务时在类上加注解 EnableScheduling 2.cron表达式的用法 1.按顺序…

java定时器的实现_java定时器实现总结

前言&#xff1a;Java定时器目前主要有3种实现方式&#xff1a;JDK组件&#xff0c;Spring Task&#xff0c;Quartz框架。 1. JDK组件 (1) java.util.TimerTask MyTimerTask.java&#xff1a; public class MyTimerTask extendsTimerTask { Overridepublic voidrun() { System.…

简单实现Java定时器

✨✨hello&#xff0c;愿意点进来的小伙伴们&#xff0c;你们好呐&#xff01; &#x1f43b;&#x1f43b;系列专栏&#xff1a;【JavaEE】 &#x1f432;&#x1f432;本篇内容&#xff1a;自己实现Java定时器 &#x1f42f;&#x1f42f;作者简介:一名现大二的三非编程小白&…

java 定时器框架_java定时器

java定时器 什么是Java定时器&#xff1f; Java 定时器就是在给定的间隔时间执行自己的任务; Java实现定时器有以下几种: 通过Timer来实现定时任务 Timer 是来自 java.util.Timer 指定时间执行任务 /** * author spp * date 2020-10-14 09:04 **/ public class TimerTest { pub…

Java定时器Timer的使用

目录 一、Timer常用方法 1、在某个时间点执行一次任务 2、在某个时间点执行一次任务&#xff0c;接着每隔X秒执行一次任务 3、在N秒后执行一次任务 4、在N秒后执行一次任务&#xff0c;接着每隔X秒执行一次任务 二、Timer的多任务模式 一、Timer常用方法 Timer应用场景&a…

Java定时器选择

java计时器和死循环哪个好&#xff1f;哪个建议使用&#xff1f; 计时器性能更好&#xff0c;但是写起来稍微复杂一点。如果是非常短暂的延迟&#xff0c;用死循环也未尝不可。一般来说能不用死循环的尽量不用死循环&#xff01;如果你使用的是JDK1.5以上的&#xff0c;可以使…

9.java定时器

java定时器 java的定时器有四种实现方式 使用java的timer类&#xff0c;这种方式可以灵活的控制定时器的开启关闭使用线程和线程池的方法&#xff0c;这种方式对于关闭定时器是不优雅的&#xff0c;甚至可能出错使用spring注解来启动定时任务&#xff0c;使用起来简单&#xff…

Java当中的定时器

目录 一、什么是定时器 二、Java当中的定时器 ①schedule()方法&#xff1a; ②TimerTask ​编辑 ③delay 三、实现一个定时器 前提条件: 代码实现: ①确定一个“任务”&#xff08;MyTask)的描述&#xff1a; ②schedule方法&#xff1a; ③需要一个计时器 属性…

【Java定时器】: Java创建定时器的三种方式(详细讲解)

Java创建定时器的三种方式 第一种&#xff0c;常见的thread&#xff0c;创建一个Thread让他让循环里一直执行&#xff0c;通过 Thread.sleep 来达到 定时任务的效果。 栗子如下&#xff1a; public static void main(String[] args) {final long timeTnterval 1000;Runnable …

Java定时器

目录 一、认识定时器 1、什么是定时器 2、标准库的定时器 二、模拟实现定时器 1、描述定时器中的任务 2、管理多个任务 3、扫描线程 4、优化 5、最终代码 一、认识定时器 1、什么是定时器 定时器是实际开发中常用的一个重要组件&#xff0c;类似于我们生活中的“闹钟…

matlab画图函数之plot【matlab图行绘制一】

plot函数 plot(x,y,’–gs’,‘LineWidth’,2,‘MarkerSize’,10,‘MarkerEdgeColor’,‘b’,‘MarkerFaceColor’,[0.5,0.5,0.5]) plot函数是最基本、最常用的绘图函数&#xff0c;用于绘制线性二维图。有多条曲线时&#xff0c;循环使用由坐标轴颜色顺序属性定义的颜色&…

Matlab画图线型、符号及颜色设置

1. matlab 中线条的主要属性 Color: 颜色LineStyle: 线型LineWidth: 线宽Marker: 标记点的形状MarkerFaceColor: 标记点填充颜色MarkerEdgeColor: 标记点边缘颜色MarkerSize: 标记点大小 2. 各种属性的名称 2.1 线型 -Solid line (default) – Dashed line : Dotted line …

matlab 画图基本

内容安排如下&#xff1a; 1、基本绘制&#xff08;图画大小、图形名称、图画背景、坐标轴名称、刻度范围、曲线颜色、坐标轴字体颜色等&#xff09;2、多条曲线&#xff08;plot hold on&#xff1b;plotyy&#xff1b;subplot&#xff1b;&#xff09;3、日期及时间轴绘图4、…

MATLAB画图详细教程

本文将详细介绍如何用matlab绘图并美化。 关于figure() 创建图窗窗口:figure() figure()的属性: Name:在标题栏显示的名称,接字符串,如Test Position:在电脑屏幕上的位置和大小,后接向量[left,bottom,width,height]也就是说指定了图窗的左下角位置,再向右+width、…

MATLAB画图总结

前言 在进行数据处理展示的时候&#xff0c;为了能直观体现实验的结果&#xff0c;需要进行绘图&#xff0c;让人们能直观的记住数据的走向特征&#xff0c;图像是结果的一种可视化展现&#xff0c;因此掌握一些绘图方法非常重要&#xff0c;使用MATLAB可以很简单的进行画图。下…

matlab 画图基本介绍

1.在命令窗口输入命令时&#xff0c;可以不必每输入一条命令就按enter键执行&#xff0c;可以在输入几行后一同运行。方法是&#xff1a;换行时&#xff0c;只要在按住<shift>键的同时按<enter>键即可&#xff0c;否则matlab就会执行上面输入的所有语句。 2.如何将…

matlab画图操作(修改坐标轴及字体,加粗,颜色修改,适合论文画图)

matlab常用画图操作 1.设置坐标轴2.设置figure大小3.matlab线条设置4.子图设置5.颜色查询6.colorbar设置7.线条透明度设置8.设置坐标轴刻度形式&#xff08;对数刻度&#xff09;9.图例设置10 文件保存11 消除白色边框12 添加子标题13 调换y轴递增顺序 1.设置坐标轴 %设置坐标…

使用matlab画图中图

又到一年论文季&#xff0c;没想到临近投稿的我居然会被图片的清晰度打败&#xff0c;需要子母图的时候&#xff0c;我直接使用powerpoint进行拼接&#xff0c;多次png另存为&#xff0c;图已经糊出了新高度&#xff0c;那种超级糊图在论文里应该是投不出去的吧。。。但是&…

matlab-画图对坐标的显示

前言 许多小朋友对于matlab画图函数再熟悉不过了&#xff0c;但是画图里面还有更细小的地方我们还得注意&#xff0c;对于坐标的显示也是我们在日常生活中常需要我们做的&#xff0c;下面我就将以一个例子1来说明在画图中显示坐标的两种形式。 下面的数据取样格式为 提示&a…