`

Asp.net定时控件

阅读更多

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
}
}

分享到:
评论

相关推荐

    Asp.net的Timer控件使用

    该控件能够定是引发整个页面回送,当它与Updatepanel空间搭配使用时,就可以定时引发异步回送并进行局部刷新

    C# ASP.NET不妥控件编程实例续2之Ajax实现

    C# ASP.NET不妥控件编程实例2之Ajax实现,结合xml数据,json数据,实现ajax效果。本代码是我给学生上课用的现场编程。案例精彩:局部省市级联, 股票定时刷新,web聊天等

    asp.net知识库

    ASP.NET2.0控件一览---标准控件(1) ASP.NET2.0控件一览---标准控件(2) ASP.NET 2.0中使用webpart系列控件 ASP.NET 2.0 中实现跨页提交 新控件、管理外观、布局及其它用户体验 ASP.NET 2.0 缓存技术 (原创) asp.net...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    ASP.NET4高级程序设计(第4版) 3/3

    书中还深入讲述了其他ASP.NET图书遗漏的高级主题,如自定义控件的创建、图像处理、加密等。此外,《ASP.NET 4高级程序设计(第4版)》专门提供了两章的内容来教你如何用Ajax 技术制作快速响应的页面,以及如何使用微软...

    史上最好传智播客就业班.net培训教程60G 不下会后悔

    ASP.Net中控件数量是非常多的,讲解ASP.Net的教材通常要上千页,让初学者望而生畏,其实ASP.Net大部分控件相似性非常强的,同类型的控件学会了一个那么其他控件也就很容易学会了。比如只要学会了DropDownList,那么...

    一个功能强大的基于ASP.NET的WebTimer时间控件源程序

    一个功能强大的基于ASP.NET的WebTimer时间控件源程序,采用VS2005+C#开发,可以对时间间隔触发事件进行定义,实现网页的动态定时刷新。

    网络书店 ASP.NET网站

    网络书店 一个小 demo ,项目中用到的技术 , 01、简单三层架构 ...17、Quartz.Net 定时任务框架 18、启动FFMepg进行转码、抓缩略图 19、视频转码 20、大文件上传 21、无刷新评论 22、异步获取数据

    Asp.net+Ajax框架教程 文档+源码

    在客户端无刷新定时执行服务端方法... 5). Ajax中新Validators控件用法示例... 10. Validators控件使用配置示例... 6). 在客户端请求服务端最基本的执行方式... 11. 使用Ajax library类库中的客户端WebReqest...

    asp.net PopupBox(源码,dll)

    一个弹出类似MSN信息窗口的控件 PopupBox 弹出可定时自动关闭的消息窗口 asp.net PopupBox(源码,dll)

    asp页面无闪烁处理.doc

    asp页面闪烁是众所周知的事,使用ajax来处理是非常简单有效的方法,但网上许多文章写的代码复杂难懂,讲了大通原理,大堆代码,将初学者搞的云里雾里,不知所以,初学者最关心是如何应用,底层原理以后慢慢学,本人...

    VS2005入门视频教程-025.Asp.Net中的事件(控件事件).rar

    本系列教程的课程安排参考了多本.net 1.1以及在目前的2.0新书的基础上认真编订。不敢夸口本系列多了不起,但至少敢保证你看完本系列,再做完每个小结的测试,你入门是绝对没有问题的!做一个简单的网站是绝对可以的!祝愿...

    Visual C#.NET程序设计(含书籍和源码) 李兰友 杨晓光 清华出版社,北交出版社

    4.5 定时控件 4.6 Button控件 本章小结 习题 第5章 Windows应用程序界面设计 5.1 命令按钮界面设计 5.2 菜单界面设计 5.3 单选按钮界面设计 5.4 MDI界面设计 5.5 工具栏界面设计 5.6 状态栏界面设计 本章小结 习题 ...

    快速开发框架NFine ASP.NET MVC+EF6+Bootstrap开发框架

    •核心框架:ASP.NET MVC5、WEB API •持久层框架:EntityFramework 6.0 •定时计划任务:Quartz.Net组件 •安全支持:过滤器、Sql注入、请求伪造 •服务端验证:实体模型验证、自己封装Validator •缓存...

    自定义报表控件,dll和源码,使用demo

    1、本程采用 Asp.Net + 用友华表(V5.1) 制作 2、本程序提供一个报表设计器、报表生成器及Asp.Net调用例子 3、ReportTool是报表设计器,由他设计的报表保存在数据库表SysReports中;ReportServiceConfig 是报表...

    C#完整教程

    10.1 常用的ASP.NET服务器端控件 188 10.2 ASP.Net控件数据绑定 192 10.3 数据验证控件 209 10.4 DataGraid控件 219 10.5 AdRotator控件 235 10.6 Calender控件 236 10.7 Visual Studio.Net实现留言板 239 第十一章 ...

    使用Timer的定时刷新

    asp.net的定时器应用,timer是个很好的控件,希望大家共同学习。谢谢诶

    ExtAspNet_v2.3.2_dll

    -使得Asp.net的控件ImageButton具有和Asp.net的Button控件类似的行为(Ajax提交)(feedback:261629698)。 +TabStrip增加GetAddTabReference和GetRemoveTabReference两个函数,用来向TabStrip控件动态增加删除Tab。...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -使得Asp.net的控件ImageButton具有和Asp.net的Button控件类似的行为(Ajax提交)(feedback:261629698)。 +TabStrip增加GetAddTabReference和GetRemoveTabReference两个函数,用来向TabStrip控件动态增加删除Tab。...

Global site tag (gtag.js) - Google Analytics