背景: 我在单击按钮时有一个长时间运行的查询。因此,调用 updateprogress 来通知用户进程正在进行中。目前它正在显示静态数据,即标签。
当执行长时间运行的进程时,udapteprogress 的预期内容会出现在前台并冻结剩余的内容。ie正在生成报告,请不要关闭窗口
现在我们想显示完成百分比,即 xx%(例如:10%),而 updateprogress 的内容在前台
代码: 更新进度
<asp:UpdateProgress ID="UpdateProgress1" runat="server">
<ProgressTemplate>
<div id="progress">
<asp:Label ID="lblProgress" Text="Report generation is in progress, Please do not close the window" runat="server"></asp:Label>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
带按钮的更新面板
<asp:UpdatePanel ID="upExport" UpdateMode="Always" runat="server">
<ContentTemplate>
<asp:Button ID="btnExport" runat="server" Text="Export"
OnClick="btnExport_Click" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnExport" EventName="Click"/>
</Triggers>
</asp:UpdatePanel>
服务器端功能:
protected void btnExport_Click(object sender, EventArgs e)
{
//long running method
}
PS:当进程正在执行 btnExport_Click 并且 updateprogress 在前台时,我希望它显示完成百分比。
在我失败的尝试中,我尝试在“btnExport_Click”方法中更新会话变量并通过 javascript 访问它但不成功
更新 1: 我想知道一种方式,当我仍在长时间运行的方法中时,我可以传达 % 值,因为一旦控制退出长时间运行的方法。这将是 100% 完成,并且 updateprogress 将不再处于前台。
谢谢你的时间:)