我在這裏有一些相當簡單的代碼,但我不能爲我的生活弄清楚爲什麼它不工作。UpdatePanel.Update()方法不會更新UpdatePanel控件的內容?
我有一個名爲Update.aspx
網頁,其中包含以下HTML:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
Non Panel <%= Date.Now.ToLongTimeString%>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" ChildrenAsTriggers="False" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="lbl" runat="server">Updates in 5</asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
後面的代碼看起來是這樣的:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim t As New Timers.Timer
t.Interval = 5000
AddHandler t.Elapsed, AddressOf raiseupdate
t.Start()
End Sub
Private Sub raiseupdate(ByVal sender As Object, ByVal e As System.EventArgs)
sender.stop()
lbl.Text = Date.Now.ToLongTimeString
UpdatePanel1.Update()
End Sub
這就是我期待發生:該頁面顯示更新面板中的文字「5中的更新」。計時器過去後,調用raiseupdate()
方法,並調用更新面板update()
,刷新更新面板的內容。
實際情況是這樣的:計時器過去了,更新面板update()
方法行已到達,但數據似乎永遠不會回到頁面。也就是說,「5中的更新」一詞永遠不會被當前時間所取代。
所以我想,我已經遇到了一些關於update()
方法實際做什麼的基本誤解,但我無法弄清楚我出錯的地方。我能做些什麼來完成這項工作?
ASP.NET中的線程(本質上是多線程的)並不是我所說的_fairly simple_ 。爲什麼不使用['Ajax Timer控件'](http://ajax.net-tutorials.com/controls/timer-control/)?定時器和線程:http://stackoverflow.com/a/1436331/284240 –
因爲我正在探索擴展此示例的可能性,以便我們可以在異步請求和更新updatepanel(s)返回時。 _那麼它會變得複雜。 –