protected void Button1_Click(object sender, EventArgs e)
    {
        Ex("application/ms-excel ", "浏览已上报的报表.xls ");
    }
    private void Ex(string FileType, string FileName)
    {
        Response.Charset = "GB2312 ";
        Response.ContentEncoding = System.Text.Encoding.UTF7;
        Response.AddHeader("Content-Disposition ", "attachment;filename= " + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString());
        Response.ContentType = FileType;
        this.EnableViewState = false;
        StringWriter tw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(tw);
        this.gvReportBaseView.RenderControl(hw);//这里抛出异常
        Response.Write(tw.ToString());
        Response.End();
    }类型“GridView”的控件“ctl00_ContentPlaceHolder_gvReportBaseView”必须放在具有 runat=server 的窗体标记内。这个问题是什么原因,该如何解决呀,我使用的是MasterPaeg页来做的。

解决方案 »

  1.   

    gridview必须放在form内.如下面<form runat="server" id="form1"></form>
      

  2.   

    gridview必须放在form内.如下面 <form runat="server" id="form1"> </form>在form标签内呀
      

  3.   

    你是想把GridView里的信息导出到Excel里?
      

  4.   

    需要做两步工作:
    1、你的aspx文件:
    <%@ Page Language="C#" EnableEventValidation="false" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="call.aspx.cs" Inherits="report_call" Title="通话用户数" %>
    需要加EnableEventValidation="false"
    2、aspx.cs文件里面加一段:
    public override void VerifyRenderingInServerForm(Control control)
        {    }就可以了。
      

  5.   

    是你的那个需要导出excel的页面里。