这是我遇到麻烦的场景...
我有一个要执行的 SQL 存储过程,在等待它完成时(这将需要几秒钟),我想用计数器更新更新面板内的标签。
当我调用它的更新方法时,下面的代码不会更新 updatePanel,我不知道为什么。它只会在整个通话结束后更新面板。
有什么建议么?
ASPX:
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
代码隐藏:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'assume code for sql command is already setup and the stored proc does indeed execute
Dim count As Integer = 0
Dim result As IAsyncResult = cmd.BeginExecuteNonQuery()
While Not result.IsCompleted
Label1.Text = count
UpdatePanel1.Update()
Threading.Thread.Sleep(500)
count += 1
End While
End Sub
例如,存储过程需要 10 秒才能执行,我最终在标签中看到数字 20(基本上每秒 2 个),但我想看到它显示 0,然后更新为 1,然后更新为 2,等等,等等...... UpdatePanel 似乎只更新一次,而不是每次UpdatePanel1.Update()
被调用。