ASP.NET AJAX入门系列(10):Timer控件简单使用

本文主要通过一个简单示例,让Web页面在一定的时间间隔内局部刷新,来学习一下ASP.NET AJAX中的服务端Timer控件的简单使用。

 

主要内容

    Timer控件的简单使用

 

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

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

3.单击ScriptManager控件并双击UpdatePanel控件添加到页面中。

4.在UpdatePanel控件内单击并双击Timer控件添加到UpdatePanel中。Timer控件可以作为UpdatePanel的触发器不管是否在UpdatePanel中。

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

6.在UpdatePanel控件中添加一个Label控件。

7.设置Label控件的Text属性为“Panel not refreshed yet  ”。确保Label控件添加在了UpdatePanel控件里面。

8.在UpdatePanel之外再添加一个Label控件。确保第二个Label控件在UpdatePanel的外面。

9.双击Timer控件添加Tick事件处理,在事件处理中设置Label1Text属性为当前时间。

protected void Timer1_Tick(object sender, EventArgs e)

{
    Label1.Text 
= "Panel refreshed at: " +

      DateTime.Now.ToLongTimeString();
}

10.在Page_Load事件中添加代码设置Label2Text属性为页面创建时间,如下代码所示:

protected void Page_Load(object sender, EventArgs e)

{
    Label2.Text 
= "Page created at: " +

      DateTime.Now.ToLongTimeString();
}

11.切换到代码视图,确保代码如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    Label2.Text 
= "Page created at: " +

      DateTime.Now.ToLongTimeString();
}


protected void Timer1_Tick(object sender, EventArgs e)

{
    Label1.Text 
= "Panel refreshed at: " +

      DateTime.Now.ToLongTimeString();
}

12.保存并按Ctrl + F5运行

13.等待10秒钟后可以看到Panel刷新,里面的Label文字改变为刷新的时间而外面的Label没有改变。

 

[翻译自官方文档]

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

 回复 引用 查看   
#1楼 2006-11-15 11:42 Charming.Z      
:)
 回复 引用 查看   
#2楼 2006-11-15 11:50 Charming.Z      
请问一下,在beta2中还可以使用xml-script吗?在哪里可以找到帮助文档?
 回复 引用 查看   
#3楼[楼主] 2006-11-15 12:49 TerryLee      
@Charming.Z
好像不行吧,我还没有看客户端那块

 回复 引用 查看   
#4楼 2006-11-15 14:00 小镇姑娘她爹      
简单易懂,不错啊
 回复 引用 查看   
#5楼 2006-11-15 15:16 Hunts.C      
我的Sys undefied解决了,它自己好的,也不知道为什么~~~
 回复 引用 查看   
#6楼[楼主] 2006-11-15 20:09 TerryLee      
@小镇姑娘她爹
翻译的官方文档:)

 回复 引用 查看   
#7楼[楼主] 2006-11-15 20:10 TerryLee      
@Hunts.C
唉……

看来现在的核心版还是不稳定-_-

 回复 引用   
#8楼 2006-11-22 13:32 .NET CODER[未注册用户]
nice
 回复 引用   
#9楼 2006-11-28 09:09 liupan[未注册用户]
good!
 回复 引用 查看   
#10楼[楼主] 2006-11-28 09:40 TerryLee      
@.NET CODER
@liupan
:)

 回复 引用   
#11楼 2006-12-25 09:36 Batista[未注册用户]
每天都从这里得到充实~
 回复 引用 查看   
#12楼[楼主] 2006-12-25 11:38 TerryLee      
@Batista
:)

 回复 引用 查看   
#13楼 2006-12-30 15:59 FutureFlare      
服务器怎样通知客户端更新某项?AJAX能否实现从服务器端发起的请求?
 回复 引用   
#14楼 2007-02-14 10:50 Deded[未注册用户]

 回复 引用   
#15楼 2007-03-02 17:13 游客[未注册用户]
兴奋
 回复 引用   
#16楼 2007-03-12 11:06 yuki[未注册用户]
看完!学到新知识了!~
 回复 引用   
#17楼 2007-03-25 13:17 qucha[未注册用户]
ASP.NETAJAX入门系列将会写关于ASP.NETAJAX一些控件的使用方法以及基础知识,其中部分文章为原创,也有一些文章是直接翻译自官方文档,本部分内容会不断更新。
 回复 引用 查看   
#18楼 2007-03-26 15:35 扑街仔      
这个很简单..呵呵.学习了!
 回复 引用   
#19楼 2007-03-30 14:39 helen[未注册用户]
我照着一步一步做的,可是Timer的事件根本不会触发啊?可能是什么原因哪?
 回复 引用   
#20楼 2007-04-14 15:45 zengerYum[未注册用户]
真是翔实的解释,我越来越有兴趣了,请继续更新,期待ing.....
 回复 引用   
#21楼 2007-04-16 11:22 m[未注册用户]
不对啊,当我把timer放入updatepanel中时会有404错误
如果把timer放在外面,依照上面的做法则刷新整个页面.
当把updatepanel的triggers设为time tick后,则1235什么的有错误提示和上面的404差不多

 回复 引用   
#22楼 2007-05-16 13:22 shadow[未注册用户]
我的Sys undefied 问题怎么解决啊???
 回复 引用   
#23楼 2007-06-13 09:46 木其子[未注册用户]
支持!按照TerryLee's的方法做了无刷新在线用户列表,真不错!谢谢~永远支持你!
 回复 引用   
#24楼 2007-06-30 14:07 aa[未注册用户]
Timer 能不能只控制一个updatePanle啊.
同一个页面下 多个updatePale 我只想定时刷新一个 怎么办??

 回复 引用 查看   
#25楼 2007-08-26 15:56 淡泊江湖      
@aa
“同一个页面下 多个updatePale 我只想定时刷新一个 怎么办??”——
注意“Timer控件添加到UpdatePanel中”,就是一个UpdatePanel对应一个Timer,那多个UpdatePanel分别添加各自的Timer就可以了!

我倒有一个“弱弱”的问题要请教LZ及各位:“同一个页面下 多个updatePale 我只想用一个Timer定时刷新 怎么办??
(这也许是个不太合理的要求,因为既然是一个Timer刷新多个updatePale,那为何不把多个updatePanel变成一个呢?不过,不知道这样的要求如何实现)

补充(不好意思,LZ的下面一篇正式我所问的,赶紧看去!谢谢LZ的入门经典,该系列通俗易懂!UP!)

 回复 引用   
#26楼 2008-03-29 19:04 ycyaosir[未注册用户]
麻烦你看下,我想说的是界面通过timer定时刷新同时从数据库提取数据,界面要看不出刷新,还要通过timer定时刷新?how to do?
 回复 引用   
#27楼 2008-06-18 09:53 edison_nba[未注册用户]
请问下楼主,如果我要在一定时间后停止刷新应该怎么做啊?
 回复 引用 查看   
#28楼 2008-07-11 10:14 沙漠之驼      
能写这么通俗易懂,佩服
 回复 引用 查看   
#29楼 2008-07-11 10:15 沙漠之驼      
这几天照着上面把所有例子过了一遍,太佩服楼主了,叫人不得不回复,呵呵
 回复 引用 查看   
#30楼 2008-07-19 17:37 stg609      
楼主,不知道为什么,我用timer控件,直接在vs下预览,就是按F5运行,一切正常,可以正常间隔的刷新,但是用IIS预览,则时好时坏,现在的情况基本是:前1秒(我以1秒为间隔时间)可以正常刷新,然后就不刷新了,隔了很久会跳出什么"SYS.WebForms.PageRequestManagerTimeoutException:The server request timed out",然后我点确定后,有时会继续间隔的刷新,但是很快又不刷新了。有时,则还是老样子。

苦恼呀,不知道楼主有没有这种情况?

 回复 引用 查看   
#31楼 2008-12-25 11:21 wknight      
我在 使用Timer控件的时候,也碰到30楼的这个情况
 回复 引用   
#32楼 2009-02-03 21:14 Simon12345[未注册用户]
我刚做了一本台版的《ASP.NET案例精编》,大约2月份出版。里面对多数AJax问题都有较好的叙述。我正在研究如何即时得知页面访问状态。看来是个难题,希望有好解,以便用到我的MiniQQ上。
 回复 引用 查看   
#33楼 2009-02-04 11:29 有所为,有所不为      
请问如果不用ajax,怎么来实现呢?
 回复 引用   
#34楼 2009-03-17 15:54 vistalin[未注册用户]
很不错的介绍,让我学习到了很多知识
 回复 引用   
#35楼 2009-04-25 20:45 林小
LZ好像没什么时间回答问题哦
If you meet the error: "Sys undefied" try to check :
Make sure you have added the ScriptManager to the page and make sure you have selected the ASP.Net Ajax enabled-website project to get all the web.config sections that is needed to get ASP.Net Ajax running correctly.

EDIT: Make sure all script code that uses the Sys object is located after the ScriptManager on the page. If ScriptManager is not at the top of the page, you can have problem if your code makes call to the Sys object.

 回复 引用 查看   
#37楼 2010-09-09 09:57 青山yoyo      
引用stg609:楼主,不知道为什么,我用timer控件,直接在vs下预览,就是按F5运行,一切正常,可以正常间隔的刷新,但是用IIS预览,则时好时坏,现在的情况基本是:前1秒(我以1秒为间隔时间)可以正常刷新,然后就不刷新了,隔了很久会跳出什么"SYS.WebForms.PageRequestManagerTimeoutException:The server request timed out",然后我点确定后,有时会继续间隔的刷新,但是很快又不刷新了。有时,则还是老样子。
<br/>
<br/>苦恼呀,不知道楼主有没有这种情况?




楼这个问题怎么解决呢!!!!!