Asp.net定时控件

王朝asp·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;[assembly:TagPrefix("Beyondbit.App.Web.UI.WebControls", "BBit")]

namespace Beyondbit.App.Web.UI.WebControls

{ #region ElapsedEventArgs class

public class ElapsedEventArgs : EventArgs

{

public int SignalTime;

}

#endregion

/// <summary>

/// 客户端定时器

/// </summary>

[DefaultProperty("Enabled"),

ToolboxData("<{0}:ClientTimer runat=server></{0}:ClientTimer>")]

public class ClientTimer : System.Web.UI.Control , System.Web.UI.IPostBackEventHandler // , System.Web.UI.IPostBackDataHandler

{

public delegate void ElapsedEventHandler( object sender, ElapsedEventArgs e );

public event ElapsedEventHandler Elapsed; protected virtual void OnElapsed( ElapsedEventArgs e)

{

if ( Elapsed != null )

Elapsed(this, e);

} private int signalTime = 0; private int interval = 0 ;

[Description("设置或获取定时时间(毫秒)")]

public int Interval

{

set

{

if( value <= 0 )

throw new ArgumentException( "Interval时间间隔不能小于或等于0" );

interval = value ;

}

get

{

return interval ;

}

} private bool enabled = false ;

[Description("设置或获取定时器是否启用")]

public bool Enabled

{

set{ enabled = value ; }

get{ return enabled ; }

} //public bool AutoReset = false ; [Description("停止定时器")]

public void Stop()

{

enabled = false ;

} protected override void OnPreRender(EventArgs e)

{

base.OnPreRender (e); if( this.enabled == false ) return; if( interval == 0 ) throw new ArgumentException( "定时器已启动,但Interval时间间隔没有设置" ); //js

string jsId = this.UniqueID + "_js";

string clientFunction = this.UniqueID + "_OnElapsed"; signalTime = signalTime + this.interval ; string js = "<script language='javascript'>" +

"window.setTimeout( "+clientFunction+" , "+ this.signalTime +" );" +

"function " + clientFunction + "(){" +

Page.GetPostBackEventReference( this , "" + this.signalTime ) +

";}" +

"</script> ";

Page.RegisterStartupScript( jsId , js ); } /// <summary>

/// 将此控件呈现给指定的输出参数。

/// </summary>

/// <param name="output"> 要写出到的 Html 编写器 </param>

protected override void Render(HtmlTextWriter output)

{

//output.Write(Text);

} #region IPostBackEventHandler 成员 public void RaisePostBackEvent( string eventArgument )

{

if( eventArgument == "" ) throw new Exception( "eventArgument参数为空!" );

signalTime = int.Parse( eventArgument ) ; ElapsedEventArgs e = new ElapsedEventArgs();

e.SignalTime = signalTime ; this.OnElapsed( e );

} #endregion #region IPostBackDataHandler 成员// public void RaisePostDataChangedEvent()

// {

// // TODO: 添加 ClientTimer.RaisePostDataChangedEvent 实现

// }

//

// public bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)

// {

// // TODO: 添加 ClientTimer.LoadPostData 实现

//

// string s = postCollection[ this.UniqueID + "_signalTime" ];

// if( s == null s == "" ) return false;

//

// signalTime = Convert.ToInt32( s );

//

// return false;

// } #endregion

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航