用asp.net做了个系统,怎样在登陆系统后,每过30秒检测数据库中card表有没有数据更新上去,如果有数据更新进去就弹出web窗口,显示更新了几条。不知道怎么实现,winform用线程就行了,webform怎么实现,而且怎么判断数据有没有更新,更新了哪几条?怎么实现?是不是要用webservice技术??

解决方案 »

  1.   

    用timer控件不知道能不能适合你的要求!!!
      

  2.   

    在你的页面中使用iframe ,将iframe的src设置成一个用来定时读取数据库的ASPX(使用settimeout来循环执行)
      

  3.   

    需要在数据库中加一个字段new(0为新数据,1为旧数据),登陆后SQL语句检测是否有NEW等于0的,如果有弹出窗口,并update把new设为1
      

  4.   

    噢,还有个三十秒的循环,呵呵,这有点难度了.俺是通过设iframe 刷新来实现的,不过这方法不好,期待更好的方法
      

  5.   

    页面刷新好说用iframe
    还要定时阿试试timer吧
    不知道能不能好用。
      

  6.   

    在 ASP.NET 中使用计时器(Timer) 在 ASP.NET 中使用计时器(Timer)  
    我在实验中发现在 ASP.NET 中可以使用计时器(Timer)完成一些定时动作。这一点可能会对我们的一些 Web 程序有益。 下面首先介绍我测试使用的一个例子: 首先在 global.asax 中的 Application_OnStart 事件过程中定义计时器,代码如下: 
    [VB.NET] global.asax 
    <%@ import Namespace="System.Timers" %>  
    <script runat="server">     Sub Application_OnStart(sender As Object, e As EventArgs)  
           ' 创建一个计时器,单位:毫秒 
           Dim aTimer As New System.Timers.Timer(10000)        ' 将 Fresher 指定为计时器的 Elapsed 事件处理程序  
           AddHandler aTimer.Elapsed, AddressOf Fresher         ' AutoReset 属性为 true 时,每隔指定时间循环一次;  
           ' 如果为 false,则只执行一次。  
           aTimer.AutoReset = True  
           aTimer.Enabled = True  
              
           ' 先给 Application("TimeStamp") 指定一个初值  
           Application.Lock()  
           Application("TimeStamp") = DateTime.Now.ToString()  
           Application.UnLock()  
       End Sub     Sub Fresher(sender As Object, e As ElapsedEventArgs)  
           Application.Lock()  
           Application("TimeStamp") = DateTime.Now.ToString()  
           Application.UnLock()  
       End Sub  </script> 
      
    然后我们简单写一个 test.aspx 来查看 Application("TimeStamp") 的值。代码如下: 
    [VB.NET] test.aspx 
    <%  
        Response.Write(Application("TimeStamp"))  
    %> 
      分析: 根据 global.asax 中的代码,我们设定了一个计时器,每隔 10 秒钟执行一次 Fresher() 过程;在 Fresher() 过程中我们事实上只是重新写入了一个 Application("TimeStamp") 新值。换句话说,Application("TimeStamp") 的值是应该每隔 10 秒钟更新一次的。 是不是这样的呢?通过 test.aspx 的反复刷新观察 Application("TimeStamp") 的值,的确发现这个值在每隔 10 秒地变化一次,而其他时候则保持不变。与我们的预期是一致的。 意义: 通过引入计时器我们可以在 ASP.NET 的全局性程序(Application)中灵活的使用计时器完成一些定时操作,比如:在社区/论坛系统中,每隔 5 分钟更新一次在线用户列表,每隔 1 个小时更新一次用户经验值,或者每隔一天备份一次关键数据等等。这个思路应该是很诱人的。 
      

  7.   

    AddHandler aTimer.Elapsed, AddressOf Fresher  
    看不懂,翻译成C#怎么写???
      

  8.   

    yidishui1570(一滴水)  的方法需要手工去刷新,感觉不是很好,有没有自动刷新的???
    然后去读数据库??
      

  9.   

    你可以在需要检查的页面A创建一个XMLHttp来每隔30秒访问一个检查是否有新的Card的页面,比如你有一个页面CheckNewCards.aspx, 其中CodeBehind中做检查,
    Page_Load函数
    bool blHasNew = CheckNewCards();
    Response.Write(blHasNew.ToString());
    Response.End();
    CheckNewCards()是你检查是否有新Card的函数,返回true or false;在页面A中有如下函数
    function Time_Elapsed()
    {
       x = new ActiveXObject("MSXML2.XMLHTTP");
       x.open("GET","C.aspx?T=0",false);
       x.send("AAAA");
       if (x.status == 200)
       {
         d = x.responseText;
         if (d.toUpperCase() == "TRUE")
         {
             //open new web page to show the new cards      }
       } 并且在成功登陆后,在A页面注册这样一个StartUp script
    window.setInterval(Time_Elapsed, 30000);这样就会每隔30秒检查一次是否有新Cards了
      

  10.   

    上面的function应是::)
    function Time_Elapsed()
    {
       x = new ActiveXObject("MSXML2.XMLHTTP");
       x.open("GET","CheckNewCards.aspx",false);
       x.send();
       if (x.status == 200)
       {
         d = x.responseText;
         if (d.toUpperCase() == "TRUE")
         {
             //open new web page to show the new cards      }
       }
      

  11.   

    gz
    感觉思路还是cs的,bs程序不该这样做,至少查询数据库的操作不应该放在服务器端
      

  12.   

    forestyang(forestyang) ( ) 信誉:100 
      支持这个!!!