Timer控件概要
一、引言:
Timer控件实现固定时间间隔提交页面功能。如果你使用timer控件和UpdatePanel控件可以实现固定时间间隔局部刷新页面。你也可以用timer控件来提交整个页面。
二、本篇包含以下部分:
1.使用情景
2.背景
3.实例代码
三、Timer控件适用情况:
你可以使用timer控件实现如下效果:
1. 不刷新整个页面,周期性的更新一个或多个updatepanel。
2. 每次通过timer控件产生回发来执行服务器端代码。
3. 固定时间间隔同步的向服务器回发所有页面。
四、背景
Timer控件是一个服务器端控件,其作用就是嵌入一段javascript代码到网页中。当Interval属性实例化了,这段被嵌入的javascript代码就可以通过浏览器提交该页面。你在服务期端代码里设置的Interval属性值将会被传递给页面上的javascript代码。
使用timer控件时,必须要页面内包含一个ScriptManage类的实例。当timer控件提交页面,将会触发它的Tick事件。你可以编写Tick事件用来处理页面提交到服务器后的行为。Interval属性控制页面提交的频率,Enable属性控制timer控件的运行和停止。Interval属性的单位是毫秒,默认值是60000毫秒,也就是60秒。
注意:
当把Interval属性设置很小时,将会给服务器产生不必要的流量。因此,只有在必要时通过timer控件来刷新页面内容。
如果不同的updatepanel控件需要在不同的时间间隔刷新,你可以在页面内放置多个timer控件。换句话说,一个timer控件可以触发页面中多个updatepanel控件刷新。
五、在updatepanel控件里面使用timer控件
如果timer控件被放在updatepanel内部,它将自动做为updatepanel控件异步刷新的触发器。你可以通过设置updatepanel 的“ChildrenAsTriggers”属性为“false”来重写这个行为。
由于timer控件在updatepanel控件内部,当每次页面回送结束时,javascript会适时建仓其构成要素有没有被重新创建。因此,timer控件是从页面回送结束时开始计时的。举个例子:比如Interval属性设置为60000毫秒(60秒),然而页面回送花了3秒钟,那么下一次回送将会在前一次的63秒后发生。
下面的例子讲指出如何在updatepanel内部应用timer控件
<asp:ScriptManager runat="server" id="ScriptManager1" />
<asp:UpdatePanel runat="server" id="UpdatePanel1"
UpdateMode="Conditional">
<contenttemplate>
<asp:Timer id="Timer1" runat="server"
Interval="120000"
OnTick="Timer1_Tick">
</asp:Timer>
</contenttemplate>
</asp:UpdatePanel>
六、在updatepanel控件里面使用timer控件
当timer控件在updatepanel控件外部的时候,你必须明确的指定其为updatepanel控件的更新触发器。在页面回送时(不是回送结束),javascript就会适时检测其构成要素有没有继续运行。举个例子:比如Interval属性设置为60000毫秒(60秒),然而页面回送花了3秒钟,那么下一次回送将会在前一次的60秒后发生。用户仅仅只有57秒的时间去看更新的内容。你必须把Interval属性值设置为大于一次异步刷新完成的时间,否则当前一次回送刚刚执行(没有执行完成),这时后一次回送开始了,那么前一次回送将会被取消。(实际上这是一个无限循环,将导致一次回送都处理不了)
下面的例子讲指出如何在updatepanel外部应用timer控件
<asp:ScriptManager runat="server" id="ScriptManager1" />
<asp:Timer ID="Timer1" runat="server" Interval="120000"
OnTick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1"
EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" ></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
马马虎虎算是把这个翻译完了,看的明白不代表能说的明白,郁闷阿~感觉翻译的很不好,得多练。