0

btnコントロールをクリックすると、javascriptを使用してbtnを無効にしてから、btnクリックイベント呼び出しを実行します。btnクリックイベント内で、そのためのExcel / pdf形式でレポートを提供するコードを記述します。メソッドExportToHttpResponse(ExportFormatType.Excel、Response、true、 "Report Name")を使用します。これにより、例外が発生するため、このメソッドの後に、または最後に書き込み時にブロックします。 btn.enable = true; またはjavascriptを使用して実行されません。コードが最適化されているか、ネイティブフレームが呼び出しスタックの最上位にあるため、例外は式を評価できません

つまり、レポートが生成されるときにbtnを有効にする必要があります。このメソッドが実行されるとExportToHttpResponse()レポートを取得したので、このメソッドの後にbtn制御を有効にする必要があります

protected void Page_Load(object sender, EventArgs e)
{
    btnExcel.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnExcel, null) + ";");
}


protected void btnExcel_Click(object sender, EventArgs e)
{
   view_report();
    try
    {
       Rpt.ExportToHttpResponse(ExportFormatType.Excel, Response, true, " Reportname");
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
        ex = null;
    }
    finally
    {                  
       btnExcel.Enabled = true;
        ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "CallJSFunction", "myEnablefunction()", true);
    }
}
4

1 に答える 1

0

If you are writing directly to the Response, all the asp.net structure is broke, so you cannot change the property of the control, because you already interfered in the "natural" rendering of asp.net. If there's an error in the middle of the export, the page is broken.

于 2012-06-13T15:59:41.407 に答える