System.Web.UI.Control ctl = this.GridView1;
        //DataGrid1是你在窗体中拖放的控件
        HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");
        HttpContext.Current.Response.Charset = "UTF-8";
        HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        ctl.Page.EnableViewState = false;
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
        ctl.RenderControl(hw);
        HttpContext.Current.Response.Write(tw.ToString());
        HttpContext.Current.Response.End();我用这样的他报了下面的错,
类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。 

解决方案 »

  1.   

    //加上:    public override void VerifyRenderingInServerForm(Control control)
        {//重载VerifyRenderingInServerForm方法,否则会出错
            //base.VerifyRenderingInServerForm(control);
        }
      

  2.   

    看一下html代码,gridview1控件没有在form标签内部,把它拷到form标签内部就ok了,或者form没有添加runat="server"属性
      

  3.   

    首先看一下你的gridview1是不是在form里,如果是:则在cs文件中添加以下这段代码:
     public override void VerifyRenderingInServerForm(Control control)
            {        }