值得注意的是VerifyRenderingInServerForm重載方法:
MSDN上的 VerifyRenderingInServerForm 方法的描述:
必須位于 <form runat=server> 標記中的控件可以在呈現(xiàn)之前調(diào)用此方法,以便在控件被置于標記外時顯示錯誤信息。發(fā)送回或依賴于注冊的腳本塊的控件應該在 Control.Render 方法的重寫中調(diào)用此方法。呈現(xiàn)服務器窗體元素的方式不同的頁可以重寫此方法以在不同的條件下引發(fā)異常。
如果回發(fā)或使用客戶端腳本的服務器控件沒有包含在 HtmlForm 服務器控件 (<form runat="server">) 標記中,它們將無法正常工作。這些控件可以在呈現(xiàn)時調(diào)用該方法,以在它們沒有包含在 HtmlForm 控件中時提供明確的錯誤信息。
開發(fā)自定義服務器控件時,通常在為任何類型的輸入標記重寫 Render 方法時調(diào)用該方法。這在輸入控件調(diào)用 GetPostBackEventReference 或發(fā)出客戶端腳本時尤其重要。復合服務器控件不需要作出此調(diào)用。
沒有這個方法,程序?qū)箦e。 詳情請點擊
可使用如下代碼:
protected void Button1_Click(object sender, EventArgs e)
??? {
??????? Response.Clear();
??????? Response.Buffer = true;
??????? Response.Charset = "GB2312";
??????? Response.AppendHeader("Content-Disposition", "attachment;filename=StuInfo.xls");
??????? // 如果設置為 GetEncoding("GB2312");導出的文件將會出現(xiàn)亂碼!!!
??????? Response.ContentEncoding = System.Text.Encoding.UTF7;
??????? Response.ContentType = "application/ms-excel";//設置輸出文件類型為excel文件。
??????? System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
??????? System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
??????? this.GridView1.RenderControl(oHtmlTextWriter);
??????? Response.Output.Write(oStringWriter.ToString());
??????? Response.Flush();
??????? Response.End();
??? }???
??? public override void VerifyRenderingInServerForm(Control control)
??? {
??? }
??? protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
??? {
??????? if (e.Row.RowType == DataControlRowType.DataRow)
??????? {
??????????? e.Row.Cells[1].Attributes.Add("style", "vnd.ms-excel.numberformat:@;");
??????? }
??? }?