Excelレポートの生成でプログレスバーを使用しているときに問題が発生します...
正確に私が達成しようとしているのは:-ボタンをクリックするだけでExcelレポートを生成しようとしています。レポートの生成には時間がかかるため、Excelが生成されるまで進行状況バーが必要です。
問題:-ボタンがクリックされるとプログレスバーが表示されますが、Excelのダウンロードがユーザーに求められた後は非表示/無効になりません。プログレスバーはまだそこにあります...
更新パネルのポストバックトリガーボタンを使用してExcelを生成しています。そして、Response.Write()メソッドを使用してExcelレポートを生成します。
そして、私はpagerequestmanagerを使用して、ポストバックの開始ハンドラーと終了ハンドラーを登録しています。私がこれで立ち往生している私を助けてください...
<asp:ScriptManager ID="ScriptManager1" runat="server"/>
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
//Raised before processing of an asynchronous postback starts and the postback request is sent to the server.
prm.add_beginRequest(BeginRequestHandler);
// Raised after an asynchronous postback is finished and control has been returned to the browser.
prm.add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
//Shows the modal popup - the update progress
var popup = $find('<%= modalPopup.ClientID %>');
if (popup != null) {
popup.show();
}
}
function EndRequestHandler(sender, args) {
//Hide the modal popup - the update progress
var popup = $find('<%= modalPopup.ClientID %>');
if (popup != null) {
popup.hide();
}
}
function ShowProgress() {
var myExtender = $find('<%= modalPopup.ClientID %>');
myExtender.show();
return true;
}
</script>
<div>
<asp:UpdateProgress ID="updateProg" runat="server">
<ProgressTemplate>
<asp:Image ID="imgProg" ImageUrl="ajax-loader.gif" runat="server" />
</ProgressTemplate>
</asp:UpdateProgress>
<ajaxToolkit:ModalPopupExtender ID="modalPopup" runat="server" TargetControlID="updateProg" PopupControlID="updateProg" BackgroundCssClass="modalPopup" />
<asp:UpdatePanel ID="pnlData" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btnSubmit" runat="server" Text="Excel" onclick="btnSubmit_Click" OnClientClick="return ShowProgress(); return false;"/>
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnSubmit" />
</Triggers>
</asp:UpdatePanel>
</div>
そして、ボタンをクリックして、私は次のコードを使用しています:-
try
{
Thread.Sleep(7000);
Response.Clear();
String Attachment = "attachment; filename=" + "MonitoringReport.xls";
Response.ClearContent();
Response.AddHeader("content-disposition", Attachment);
Response.ContentType = "application/vnd.ms-excel";
Response.Write("<table border=1 style='font-size:12px;'>");
Response.Write("<th>" + "Col1" + "</th>");
Response.Write("<th>" + "Col2" + "</th>");
Response.Write("<th>" + "Col3" + "</th>");
Response.Write("<th>" + "Col4" + "</th>");
Response.Write("</table>");
Response.End();
}
catch (ThreadAbortException ex)
{
}