ここにはかなり単純なコードがいくつかありますが、それが機能しない理由を一生理解することはできません。
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
これが私が期待していることです。ページの更新パネル内に「Updates in 5」という言葉が表示されます。タイマーが経過し、メソッドが呼び出され、更新パネルのコンテンツを更新raiseupdate()
する更新パネルメソッドが呼び出されます。update()
実際に起こることは次のとおりです: タイマーが経過し、更新パネルupdate()
メソッドの行に到達しますが、データがページに戻らないようです。つまり、「Updates in 5」という言葉が現在の時刻に置き換えられることはありません。
したがって、メソッドが実際に何をするかについて、ある種の根本的な誤解に遭遇update()
したと思いますが、どこが間違っているのかわかりません。これを機能させるにはどうすればよいですか?