ASP.NET AJAX入门系列(11):在多个UpdatePanle中使用Timer控件

本文将使用Timer控件更新两个UpdatePanel控件,Timer控件将放在UpdatePanel控件的外面,并将它配置为UpdatePanel的触发器,翻译自官方文档。

 

主要内容

    在多个UpdatePanel中使用Timer控件

 

1.添加一个新页面并切换到设计视图。

2.如果页面没有包含ScriptManager控件,在工具箱中的AJAX Extensions标签下双击ScriptManager控件添加到页面中。

3.双击Timer控件添加到Web页面中。Timer控件可以作为UpdatePanel的触发器不管它是否在UpdatePanel中。

4.双击UpdatePanel控件添加一个Panel到页面中,并设置它的UpdateMode属性值为Conditional

5.再次双击UpdatePanel控件添加第二个Panel到页面中,并设置它的UpdateMode属性值为Conditional

6.在UpdatePanel1中单击,并在工具箱中Standard标签下双击Label控件添加到UpdatePanel1中。

7.设置Label控件的Text属性值为“UpdatePanel1 not refreshed yet”。

8.添加Label控件到UpdatePanel2

9.设置第二个Label控件的Text属性值为“UpdatePanel2 not refreshed yet”。


10
.设置Interval属性为10000Interval属性的单位是毫秒,所以我们设置为10000,相当于10秒钟刷新一次。

11.双击Timer控件添加Tick事件处理,在事件处理中设置Label1Label2Text属性值,代码如下。

public partial class _Default : System.Web.UI.Page

{

    
protected void Page_Load(object sender, EventArgs e)

    
{

    }


    
protected void Timer1_Tick(object sender, EventArgs e)

    
{

        Label1.Text 
= "UpdatePanel1 refreshed at: " +

          DateTime.Now.ToLongTimeString();

        Label2.Text 
= "UpdatePanel2 refreshed at: " +

          DateTime.Now.ToLongTimeString();

    }


}

12.在UpdatePanel1UpdatePanel2中添加Timer控件作为AsyncPostBackTrigger,代码如下:

<Triggers>

  
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

</Triggers>

全部完成后ASPX页面代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    
<title>Untitled Page</title>

</head>

<body>

    
<form id="form1" runat="server">

        
<asp:ScriptManager ID="ScriptManager1" runat="server" />

        
<div>

            
<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000">

            
</asp:Timer>

        
</div>

        
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">

            
<Triggers>

                
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

            
</Triggers>

            
<ContentTemplate>

                
<asp:Label ID="Label1" runat="server" Text="UpdatePanel1 not refreshed yet."></asp:Label>

            
</ContentTemplate>

        
</asp:UpdatePanel>

        
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">

            
<Triggers>

                
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />

            
</Triggers>

            
<ContentTemplate>

                
<asp:Label ID="Label2" runat="server" Text="UpdatePanel2 not refreshed yet."></asp:Label>

            
</ContentTemplate>

        
</asp:UpdatePanel>

 

    
</form>

</body>

</html>


13.保存并按Ctrl + F5运行。

14.等待10秒钟后两个UpdatePanel都刷新后,Label中的文本都变成了当前时间。

 

[翻译自官方文档]
作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2006-11-15 21:43 TerryLee 阅读(15199) 评论(64) 编辑 收藏

 回复 引用   
#1楼 2006-11-16 21:27 hm[未注册用户]
看了着么多李大哥写的文章,终于坐到沙发了,呵呵
 回复 引用 查看   
#2楼 2006-11-17 05:39 baiwei1977      
有一个关于CascadingDropDown问题。请教一下。
现在我们处理的三级联动,都是一组数据。如果有多组三级联动的数据。

在WEB服务中一般是这样的。

public CascadingDropDownNameValue[] Get1(string knownCategoryValues, string category)

public CascadingDropDownNameValue[] Get2(string knownCategoryValues, string category)

public CascadingDropDownNameValue[] Get3(string knownCategoryValues, string category)

我怎样将一个page.asp?id=1。的参数传到Get1中呢?

现在使用的是asp.net ajax beta2。谢谢。小飞

 回复 引用 查看   
#3楼[楼主] 2006-11-18 18:05 TerryLee      
@hm
:)

 回复 引用 查看   
#4楼[楼主] 2006-11-18 18:06 TerryLee      
@baiwei1977
现在的ASP.NET AJAX ControlToolkit还不能实现吧,我也不太清楚

 回复 引用   
#5楼 2006-11-19 12:22 efly[未注册用户]
老赵~~
小弟 有个问题 不知道如何解决~
就是在模版页面 和 子页面 间 使用uodatepanle 的时候,不知道如何使用~
也就是子页面的dropdownlist 选择项事件触发的时候~我想让 masterpage中的 一块 局部 更新。我自己怎么式也不行,在 masterpage 中 拖入一个 updatepanel 吧 里面的 triigers 条件是找不到 子页面的 控件ID的·

我不知道这能不能实现,问下老赵 可有解决方法么?

 回复 引用   
#6楼 2006-11-20 21:17 xpengfee[匿名][未注册用户]
初学者,受益匪浅,谢谢了!!!
 回复 引用 查看   
#7楼 2006-11-22 10:07 WXWinter(冬)      
收刮,收刮,收刮,收刮,收刮,收刮,收刮,收刮

收刮了好多,好文章,本想偷偷跑掉,最后还是决定打个招呼(^_^)

佩服你的技术,更佩服你的文风

 回复 引用 查看   
#8楼[楼主] 2006-11-23 20:59 TerryLee      
@WXWinter(冬)
呵呵,过奖:)

 回复 引用 查看   
#9楼 2006-12-20 16:55 Anthan      
Terry 大哥还会继续吗?
 回复 引用 查看   
#10楼[楼主] 2006-12-23 16:35 TerryLee      
@Anthan
看时间吧,呵呵:)

 回复 引用   
#11楼 2006-12-25 15:19 wuyun[未注册用户]
希望Lee大哥,介绍一下这些Ajax控件的原理和机制。
 回复 引用 查看   
#12楼[楼主] 2006-12-25 21:20 TerryLee      
@wuyun
现在没时间啊

 回复 引用 查看   
#13楼 2006-12-31 10:03 舞步者      
收益非浅!
 回复 引用 查看   
#14楼 2007-01-17 21:30 孤叶(学习.net框架)      
发了一天的时间,把你的blogs的关于asp.net ajax的东东都看完拉.
VERY GOOD!!!
QQ群:18788422大家一起讨论asp.net ajax吧

 回复 引用 查看   
#15楼[楼主] 2007-01-17 23:12 TerryLee      
@孤叶(学习.net框架)
:)

// 不用QQ已经多年了:)

 回复 引用   
#16楼 2007-01-22 17:18 Henry[未注册用户]
两个月没新的了:(
 回复 引用 查看   
#17楼[楼主] 2007-01-23 22:52 TerryLee      
@Henry
太忙了

要学习的东西也太多了:)

 回复 引用   
#18楼 2007-03-08 13:48 MiKey[未注册用户]
好东西呀!!!

 回复 引用   
#19楼 2007-03-12 11:09 yuki[未注册用户]
希望能继续更新
 回复 引用 查看   
#20楼 2007-06-01 09:38 yinix      
这些好文章我已经收藏啦,谢谢哦。以后还会经常来的。
 回复 引用   
#21楼 2007-06-18 11:16 Lee Vane[未注册用户]
这个到是很简单啊,我一看就懂了
 回复 引用 查看   
#22楼 2007-08-16 16:52 菜鸟吴迪      
哎,郁闷啊,我要是一年前就跟着李老大混,早发现这个,估计技术肯定比现在NB很多啊,现在真是菜啊!:(
已经完结了吗?还有点意犹未尽啊
谢谢TerryLee

 回复 引用   
#25楼 2007-08-31 12:03 Richard sun[未注册用户]
看了Lee很多文章了。。从来没有回复过。。
太不厚道了。。
From now on , i will reply every time!
thank all.

 回复 引用   
#26楼 2007-12-13 10:24 whisdn[未注册用户]
请问:
当Web服务器停止了,此时IE会弹出出错框,如何屏蔽此出错框呢???

 回复 引用 查看   
#27楼[楼主] 2007-12-13 12:42 TerryLee      
@whisdn
可以通过ScriptManager中的错误处理,进行自定义的

 回复 引用   
#28楼 2008-01-17 21:23 玉鱼[未注册用户]
双击UpdatePanel控件添加一个Panel到页面中,并设置它的UpdateMode属性值为Conditional,我的两个panel的updateMode的属性值都设置为Always,也可以啊,这个属性里的两个属性值有什么区别吗,可以讲讲吗,我从页面上看不出区别,还望知道的讲讲,谢谢!
 回复 引用   
#29楼 2008-01-22 17:27 blackbird[未注册用户]
有一个问题就是,我用updatepanel和timer计时,时间到后,在后台执行一段代码,最后整个页面跳转到另外一个页面,这个应该怎么实现阿。其他都可以了就是跳转到另外一个页面不可以。

 回复 引用   
#30楼 2008-04-09 13:25 黄彩荣[未注册用户]
Lee老师,我看完了您的ajax真的很好.很适合我们初学者..谢谢
 回复 引用   
#31楼 2008-05-12 10:15 letianyuweng[未注册用户]
非常好的入门教程,感谢作者的奉献
 回复 引用   
#32楼 2008-06-01 11:02 李军辉[未注册用户]
最近没事研究了一下ajax。
无意中找到了你的网站,我们名字很像,呵呵。
看了一下都两年多了的文章了,不是因为看到你的文章老,是说我觉得自己太落后了,ajax都过了这么多年了,我现在才学习。

 回复 引用 查看   
#33楼 2008-06-11 19:00 zagelover      
支持,终于把文章看完了,就是没有继续更新,挺可惜的...
 回复 引用   
#34楼 2008-07-25 11:53 recoba[未注册用户]
一个字 挺好!
 回复 引用 查看   
#35楼[楼主] 2008-07-27 21:26 TerryLee      
@recoba
好像是两个字:)

 回复 引用 查看   
#36楼 2008-08-29 13:42 长空      
看完了,谢谢:)
 回复 引用   
#37楼 2008-10-04 22:28 bywind[未注册用户]
做了一遍练习,作为我踏入ajax的入门功能。
thanks

 回复 引用 查看   
#38楼[楼主] 2008-10-08 11:35 TerryLee      
@bywind
:)

 回复 引用 查看   
#39楼 2008-10-15 15:41 chenmin      
嗯,太好了!~这两天把您的ajax入门给看完了
也出现过这样那样的问题,但都通过您门的留言都解决了!~
真是前人栽树后人乘凉啊!
谢谢lz,以及留言者的大哥们!~
想问一下,那里还有关于ajax稍深一点的例子或教程 啊?

 回复 引用   
#40楼 2008-11-28 14:40 xiaoban[未注册用户]
教程看完了,写的不错.谢谢!
 回复 引用 查看   
#41楼[楼主] 2008-11-30 23:54 TerryLee      
@xiaoban
:)

 回复 引用   
#42楼 2008-12-08 17:11 Cp~~[未注册用户]
up! 3Q
 回复 引用 查看   
#43楼[楼主] 2008-12-15 10:04 TerryLee      
@Cp~~
:)

 回复 引用 查看   
#44楼 2008-12-15 17:47 Freedom~Jun      
虽然迟到了两年来学习这个,但是我想现在还不是很晚吧,呵呵。
前两个月用过,但是没有深究,现在大致了解了下,让我知道了一些
具体的操作,和用法。谢谢:-)

我想问一下,如果没有微软提供的这个AJAX组件的话,怎么达到这些效果呢?

 回复 引用 查看   
#45楼[楼主] 2008-12-16 09:56 TerryLee      
@Freedom~Jun
好多AJAX框架都会提供相关的功能,就算是直接使用JavaScript来写,也是可以实现的。

 回复 引用 查看   
#46楼 2008-12-30 18:07 boulder      
终于对ajax有个基本的了解了。现在项目中经常用XMLHttpRequest 效果也不错的
 回复 引用 查看   
#47楼[楼主] 2009-01-04 11:21 TerryLee      
@boulder
:)

 回复 引用   
#48楼 2009-03-14 21:04 javac[未注册用户]
老大 .怎么没有后文了?
 回复 引用   
#49楼 2009-03-20 20:46 yishoulong[未注册用户]
非常感谢,辛苦了
 回复 引用   
#50楼 2009-05-09 10:23 来了了[未注册用户]
怎么样在现有的页面上(即普通的ASP.NET网站)使用AJAX技术?
 回复 引用   
#51楼 2009-05-14 01:35 菜鸟1111[未注册用户]
为何我用timer控件但是没起效果啊???

 回复 引用 查看   
#52楼 2009-08-26 10:26 Jimixu      
为什么没人发现标题的panel打错了呢?
 回复 引用 查看   
#53楼 2009-09-11 13:41 钉子户      
引用Jimixu:为什么没人发现标题的panel打错了呢?

很细心的嘛


技术东西真得是……