WebForm实现实时信息提醒功能(Timers与Ajax实现及优劣浅析)【转】
本文主要讲述通过C#定时器Timers类及通过引用第三方类Aajx来实现‘OA’等系统中比较常用的信息提醒功能,并小做分析!
一,运用Timers定时器触发事件
此方法主要是指在触发事件里查询数据库,当需要的时候,调用Js,实现信息提醒的功能。方法一:前台页面插入一个Timers控件
- <asp:ScriptManager runat="server"></asp:ScriptManager>
- <asp:UpdatePanel runat="server">
- <ContentTemplate>
- <asp:Timer ID="Timer1" runat="server" ontick="Timer1_Tick" Enabled="true" Interval="500000">
- </asp:Timer>
- </ContentTemplate>
- </asp:UpdatePanel>
- protected void Timer1_Tick(object sender, EventArgs e)
- {
- try
- {
- int i = MesBll.GetMesCount();//获取数据库需要提示数据的个数
- if (i != 0)
- {
- //相关需要引用的函数
- }
- }
- catch (Exception)
- {
- throw;
- }
- }
- private void InitializeComponent()
- {
- System.Timers.Timer aTimer = new System.Timers.Timer();
- aTimer.Elapsed += new ElapsedEventHandler(GetMessageCount);//到达时间的时候执行事件GetMessageCount;
- aTimer.Interval = 500000;//设置引发时间的时间间隔 此处设置为100秒(1000*100毫秒)
- aTimer.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
- aTimer.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
- }
- private void GetMessageCount(object sender, EventArgs e)
- {
- try
- {
- int i = MesBll.GetMesCount();//获取数据库需要提示数据的个数
- if (i != 0)
- {
- //相关需要引用的函数
- }
- }
- catch (Exception)
- {
- throw;
- }
- }
二,引用Ajax实现信息提醒功能
首先是前期配置。在bin文件夹下引用下载好的AjaxPro.2.dll文件,然后是在web.config文件下加入下面这段配置代码。
- <system.web>
- <!--调用ajax,留言信息提醒用-->
- <httpHandlers>
- <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
- </httpHandlers>
- </system.web>
- Bll.CusLeaMassegeBll MesBll = new Bll.CusLeaMassegeBll();
- protected void Page_Load(object sender, EventArgs e)
- {
- #region 注册无刷新
- AjaxPro.Utility.RegisterTypeForAjax(typeof(Text));//Text为我当前页面的类名
- #endregion
- if (!IsPostBack)
- {
- }
- }
- /// <summary>
- /// 查看用户当前的数据表
- /// </summary>
- /// <returns></returns>
- [AjaxPro.AjaxMethod]
- public string getxx()
- {
- int news = MesBll.GetMesCount();//从数据表里得到需要提醒的数值
- return news.ToString();
- }
- <script language="javascript" type="text/javascript">
- setInterval("getque()", 50000); //从数据库中读取数据是间隔时间,每1000值为1分钟
- function getque() {
- var getobject = Text.getxx(callback);} //取当前用户的新信息,返回新信息的数量,Text为后台类名
- function callback(res) //回调函数
- {
- var i= document.getElementById("disMes");
- if (res.value > 0){//如果新信息的数量大于0则给用户弹窗口提示,这里只是测试,您可以用其它方法来实现提示
- i.style.display = "block";
- alert('您收到' +res.value + '条新信息,点击确定查看');
- // varurl="Default.aspx";
- // window.open(url,'600','400',1); //点击确定后进入当前用户的收件箱页面。
- }
- }
- </script>