加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

WebForm实现实时信息提醒功能(Timers与Ajax实现及优劣浅析)

发布时间:2020-12-16 00:58:20 所属栏目:百科 来源:网络整理
导读:本文主要讲述通过C#定时器Timers类及通过引用第三方类Aajx来实现‘OA’等系统中比较常用的信息提醒功能,并小做分析! 一,运用Timers定时器触发事件 此方法主要是指在触发事件里查询数据库,当需要的时候,调用Js,实现信息提醒的功能。 方法一:前台页面插

本文主要讲述通过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;
        }
    }
方法二:直接后台调用Timers类
  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>
OK,完美完成,其实运用很简单,首先是在后台调用Ajax并写好相应的响应事件:
   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();
    }
然后,现在只要在前台调用这段js就可以了。
 <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> 

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读