2013-05-10 116 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); 
相關問題