2013-05-10 80 views
1

是否有可能使用asp.net和vb.net作为后面的代码来更新System.Timers.Timer已过时事件上的UpdatePanel?我知道一个计时器控制是可用的,但请帮助我与Systems.Timer.Timer做到这一点 - 我有理由以这种方式使用它。更新从System.timers.timer后面的代码后面的代码更新UpdatePanel

每次调用处理我的定时器已过去的事件的子例程时,我都有一个文本,我的文本被更新。更新文本后,我在UpdatePanel上调用update()。什么都没发生。我知道有些方法可以在客户端使用Javascript来完成此操作,但如果可能的话,我希望远离并保持服务器端,我认为这是Ajax UpdatePanel试图为我做的。我觉得UpdatePanel应该完全符合我的需求,只更新我的页面的一小部分,在这种情况下,我的文字被存储。提前谢谢你。

这里是我的标记部分:

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
     <asp:Literal ID="timerLit" runat="server" /> 
    </ContentTemplate> 
</asp:UpdatePanel> 

这里是我的VB:

Protected Sub onTimerElapsed(source As Object, e As ElapsedEventArgs) 
    timerLit.Text = "Hello" 
    UpdatePanel1.update() 
End Sub 

我已经尝试了很多东西。我知道我的onTimerElapsed子程序被调用,并且我知道文字被填充正确的文本。更新()似乎没有做任何事情。再次感谢!

回答

1

在UpdatePanel只能从客户端工作到服务器。你所描述的场景是不可能的(至少不是你使用的技术)。这是因为服务器真的无法连接到客户端。

有两种可能性:

  • 要么做到从客户端到服务器(你丢弃)
  • 使用像SignalR的框架,如果你真的想从服务器端推。

SignalR为您实现客户端和服务器端管道,并使用当前浏览器中可用的最佳技术。

在这里你可以找到关于SignalR的详细信息:http://signalr.net/

+0

感谢您的回答,这将清除的东西了。现在我怎么会从客户端到服务器,并仍然使用我的System.Timers.Timer中已过去的事件子例程?那可能吗? – lastmjs 2013-05-10 21:26:42

+0

不,您需要使用JavaScript在客户端上执行此操作 – Kenneth 2013-05-10 21:28:30

0

而不是试图去服务器 - >客户端从客户端 - >服务器。

因此,在JavaScript中创建一个计时器,每XXX秒会调用一次代码。

就是这样。

var myTimer = setInterval(myMethod, 5000); 

function myMethod() 
{ 
    //this will repeat every 5 seconds 
    //you can reset counter here 
} 

可以清除定时器并停止它调用你的方法调用

clearInterval(myTimer);