UpdatePanel 中Gridview Export 到excel問題處理

摘要:UpdatePanel 中Gridview Export 到excel問題處理

1.語法

 

參考http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/10/03/tips-export-gridview-to-excel.aspx

 

    protected void btnExportExcel_Click(object sender, ImageClickEventArgs e)
    {
        Response.Clear();
        Response.AddHeader("content-disposition", "attachment;filename=PoolExport.xls");
        Response.ContentType = "application/vnd.xls";
        System.IO.StringWriter sw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htw = new HtmlTextWriter(sw);

        //關閉換頁跟排序
        SixSigma_GridView.AllowSorting = false;
        SixSigma_GridView.AllowPaging = false;

        HtmlForm hf = new HtmlForm();
        Controls.Add(hf);
        hf.Controls.Add(SixSigma_GridView);
        hf.RenderControl(htw);

        Response.Write(sw.ToString());
        Response.End();
    } 

    public override void VerifyRenderingInServerForm(Control control)
    {
        //在程式碼中需覆寫VerifyRenderingInServerForm這個方法的原因為
        //因沒有使用時會出現=>例外詳細資訊: System.Web.HttpException:
        //型別 'GridView' 的控制項 'GridView1' 必須置於有 runat=server 的表單標記之中。
        //所以必須在程式碼中覆寫VerifyRenderingInServerForm這個方法。
        //'處理'GridView' 的控制項 'GridView' 必須置於有 runat=server 的表單標記之中
    } 

 

2.錯誤1 訊息: Sys.WebForms.PageRequestManagerServerErrorException: RegisterForEventValidation 只能在 Render(); 期間呼叫

參考:http://www.dotblogs.com.tw/topcat/archive/2008/03/14/1336.aspx

處理方式 RegisterForEventValidation 只能在 Render(); 期間呼叫

這個問題,可以設定aspx原始檔中<%Page%>的以下兩個設定解決

EnableEventValidation = "false" AutoEventWireup="true"

3.錯誤2

參考:http://www.dotblogs.com.tw/aquarius6913/archive/2012/08/06/73849.aspx

Microsoft JScript 執行階段錯誤: Sys.WebForms.PageRequestManagerParserErrorException: 無法剖析從伺服器收到的訊息。這項錯誤通常的原因是回應被 Response.Write()、回應篩選條件、HttpModules 的呼叫修改了,或是已啟用伺服器追蹤。詳細資料: 剖析 near '<meta http-equiv=Con' 時發生錯誤。

頁面傳出錯誤訊息如下 處理方式:

 

4.匯出的Excel格式調整        

         //清除Gridview 格式
        ExportExcel_GridView.HeaderStyle.Reset();
        ExportExcel_GridView.FooterStyle.Reset();
        ExportExcel_GridView.RowStyle.Reset();
        ExportExcel_GridView.SelectedRowStyle.Reset();
        ExportExcel_GridView.Style.Clear();
        ExportExcel_GridView.GridLines = GridLines.Both;
        ExportExcel_GridView.Visible = true; 

 

 

文章簽名檔