我的服务器操作通常需要大约15分钟才能完成。我想在操作过程中将操作的各个阶段告知用户。
这是我的表单代码:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="300" ontick="Timer1_Tick">
</asp:Timer>
<asp:Label ID="lbl_Status" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</div>
<asp:FileUpload ID="upl_UserList" runat="server" />
<p>
<asp:Button ID="btn_Update" runat="server" Text="Update Users"
onclick="btn_Update_Click" />
</p>
</form>
...和我的tick事件处理程序:
protected void Timer1_Tick(object sender, EventArgs e)
{
lbl_Status.Text = labelText;
lbl_Status.ForeColor = labelColor;
}
在用户单击更新按钮期间,浏览器卡住等待服务器响应。这会导致标签不更新。
如果我使用iframe,我应该如何解决这个问题?
答案 0 :(得分:0)
添加此代码
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
您在更新面板后放置代码并移动计时器:
<asp:Timer ID="Timer1" runat="server" Interval="300" ontick="Timer1_Tick">
</asp:Timer>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="lbl_Status" runat="server" Text=""></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>