从System.timers.timer已过去事件后面的代码更新UpdatePanel

时间:2013-05-10 20:45:01

标签: asp.net vb.net timer updatepanel

使用asp.net和vb.net作为后面的代码,是否有可能在System.Timers.Timer已事件事件上更新UpdatePanel?我知道有一个计时器控件可用,但请帮我用Systems.Timer.Timer帮我做 - 我有理由这样使用它。

每次调用处理我的计时器的已用事件的子程序时,我都会有一个文字我更新的文字。更新文本后,我在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子程序被调用,我知道文字填充了正确的文本。 update()似乎没有做任何事情。再次感谢!

2 个答案:

答案 0 :(得分:1)

UpdatePanel仅适用于客户端到服务器。您描述的场景是不可能的(至少不是您正在使用的技术)。那是因为服务器无法连接到客户端。

有两种可能性:

  • 从客户端到服务器(您丢弃了它)
  • 如果您真的想从服务器端推送它,请使用SignalR这样的框架。

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

您可以在此找到有关SignalR的更多信息:http://signalr.net/

答案 1 :(得分:0)

而不是试图去服务器 - &gt;客户来自客户 - &gt;服务器

因此在javascript中创建一个计时器,每隔XXX秒调用一次代码隐藏。

像这样。

var myTimer = setInterval(myMethod, 5000);

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

您可以清除计时器并通过调用

停止调用您的方法
clearInterval(myTimer);