不久前我可能遇到过同样的问题。这是堆栈帖子...
下载文件并更新面板进度
如果您在此页面后面的代码中执行长时间运行的工作,您的更新面板将按预期运行。事件的生命周期可能是这样的。
- btnEvent 获取/构建 excel 文件。
- 在 btn 事件背后的代码中,执行构建/获取 excel 文件并将其存储在缓存中的工作......然后将 iframe 的源设置为提供 excel 作为下载(从缓存)的页面。更新面板一直显示进度 html。
- 当 html 刷新时,加载面板将消失,下载文件提示应从 iframe 中出现。
我不必编写任何 javascript 来使用更新面板来完成这项工作。
<asp:UpdateProgress ID="progress1" runat="server" AssociatedUpdatePanelID="up">
<ProgressTemplate>
<div id="processMessage">
<table width="100%">
<tr>
<td>
Loading...
</td>
<td>
<img alt="Please wait..." src="../Images/spinner.gif" />
</td>
</tr>
</table>
</div>
</ProgressTemplate>
</asp:UpdateProgress>
<asp:UpdatePanel runat="server" ID="up">
<ContentTemplate>
<div id="excel" align="right">
<asp:Button runat="server" ID="btnExcelExport" Text="Export to Excel" OnClick="btnExcelExport_Click" />
</div>
<iframe runat="server" id="ifmExcel" width="0" height="0" marginheight="0" marginwidth="0" frameborder="0" />
</ContentTemplate>
</asp:UpdatePanel>
您绝对可以使用 javascript 和 ajax 调用执行此操作,使用 beforeSend 和完成事件在工作完成时显示微调器,然后在完成时更改 iframe 的 src attr,启动下载。
希望这可以帮助。