千里之跬步.....


                                  路虽远, 行将必至; 事虽难, 做则必成...
随笔 - 164, 文章 - 3, 评论 - 12, 引用 - 2
数据加载中……

2007年8月8日

GridView 导出Excel 失败

程序运行到"GridView1.RenderControl(hw); "抛出异常:Control 'ctl00_contentPlaceHolder1_GridView1' of type 'GridView' must be placed inside a form tag with runat=server.
 Response.Clear();
        Response.Buffer 
= false;
        Response.Charset 
= "GB2312";
        Response.AppendHeader(
"Content-Disposition""attachment;filename=" + System.Web.HttpUtility.UrlEncode("用户" + this.DropDownListUser.Text + "的权限"+ ".xls");
        Response.ContentEncoding 
= System.Text.Encoding.GetEncoding("GB2312");
        Response.ContentType 
= "application/ms-excel";
        
this.EnableViewState = false;
        System.IO.StringWriter oStringWriter 
= new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter oHtmlTextWriter 
= new System.Web.UI.HtmlTextWriter(oStringWriter);
        
this.GridView1.RenderControl(oHtmlTextWriter); 
        Response.Write(oStringWriter.ToString());
        Response.End(); 
运行到this.GridView1.RenderControl(oHtmlTextWriter);时出异常。

解决方案: (从http://blog.csdn.net/xdfwsl/archive/2006/07/26/982454.aspx转的)
1、在导出界面中重载
    public override void VerifyRenderingInServerForm(Control control)
    {
        //base.VerifyRenderingInServerForm(control);
    }
2、在web.config中修改<pages enableEventValidation ="false" ></pages>
或<%@ Page Language="C#" EnableEventValidation = "false" AutoEventWireup="true" CodeFile="ExportGridView.aspx.cs" Inherits="ExportGridView" %>

3、现在可以正常导出了

posted @ 2007-08-08 14:50 dunnice 阅读(143) | 评论 (0)编辑