しばらく前に同じ問題を抱えていたかもしれません。これがスタック投稿です...
ファイルをダウンロードしてパネルの進行状況を更新する
このページのコード ビハインドで長時間実行される作業を行うと、更新パネルは期待どおりに機能します。イベントのライフ サイクルは次のようになります。
- 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 イベントと complete イベントを使用して実行し、作業が完了している間にスピナーを表示し、完了したら iframe の src 属性を変更してダウンロードを開始することができます。
お役に立てれば。