决战.NET
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.3 Timer控件

Timer控件是一个可定时运行Postback动作的控件,可用于某些需定时回复信息的功能上,Timer控件本身并未包含任何UI的界面,只是定时地进行Postback动作而已,当其与UpdatePanel控件合作时,便能将定时的Postback动作变成Async-Postback。使用Timer控件的步骤相当简单,只要放一个Timer控件到网页上的UpdatePanel控件中即可。

1. 创建一个新网页,命名为TimerTest.aspx。

2. 在页面中放入一个ScriptManager控件。

3. 放入一个UpdatePanel控件,ID为UpdatePanel1。

4. 将UpdatePanel1控件的UpdateMode设为Conditional。

5. 放一个Timer控件到UpdatePanel1控件中,ID为Timer1。

6. 设定Timer1 控件的Interval为2000,因为Interval是毫秒制,所以2000 代表着每两秒Postback一次。

7. 在UpdatePanel1控件中添加一个Label控件,ID为Label1。

8. 在Timer1控件的Tick事件中,键入程序3-8的代码。

程序3-8

    Samples\3\AjaxDemo1\TimerTest.aspx.cs
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
    }

运行此程序后,便可于网页上看到每两秒回报一次时间,如图3-7所示。

true

图3-7

那么如果有需求,需要Timer控件在Async-Postback时更新一个以上的UpdatePanel控件呢?很简单,只要将Timer控件移到UpdatePanel控件外,然后将其设定为欲更新UpdatePanel控件的Trigger即可。

1. 创建一个新网页,命名为TimerTest2.aspx。

2. 在页面中放入一个ScriptManager控件。

3. 放入一个Timer控件,Interval设为2000,ID为Timer1。

4. 放入一个UpdatePanel控件,ID为UpdatePanel1。

5. 将UpdatePanel1控件的UpdateMode设为Conditional。

6. 放一个Label控件至UpdatePanel1控件中,ID为Label1。

7. 在UpdatePanel1控件的Triggers属性中添加一个Trigger,ControlID为Timer1,EventName为Tick。

8. 放入一个UpdatePanel控件,ID为UpdatePanel2。

9. 放一个Label控件至UpdatePanel2控件中,ID为Label2。

10. 在UpdatePanel2控件的Triggers属性中添加一个Trigger,ControlID为Timer1,EventName为Tick。

11. 在Timer1控件的Tick事件中,键入程序3-9的代码。

程序3-9

    Samples\3\AjaxDemo1\TimerTest2.aspx
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        Label1.Text = DateTime.Now.ToString();
        Label2.Text = DateTime.Now.ToString();
    }

此程序的运行结果是每两秒刷新一次时间,而且更新了两个UpdatePanel,如图3-8所示。

true

图3-8

当Timer未放在任何的UpdatePanel中,也未成为任何UpdatePanel的Trigger时,其定期运行的便只是传统的Postback动作,每次Postback都会引起整个网页的刷新。