摘要: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;
文章簽名檔