1

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)
            {
            }
4

0 に答える 0