现在的问题是控件明明是已经放在FORM里面现在贴上我的代码,希望大家指点前台代码
<form id="form1" runat="server">
    <asp:GridView ID="gvw_test" runat="server">
        </asp:GridView>
     <div>
    <asp:Button ID="btn_daochu" runat="server" onclick="btn_daochu_Click" Text="导出EXCEL表" />
    </div>
    </form>
后台代码 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            gvw_test.DataSource = new memberBLL().SelectAll();
            gvw_test.DataBind();
        }
    }
    protected void btn_daochu_Click(object sender, EventArgs e)
    {
        Export("application/ms-excel", "测试报表.xls");
    }
    public void ExcelOut(GridView gv)
    {
        if (gv.Rows.Count > 0)
        {
            Response.Clear();
            Response.ClearContent();
            Response.AddHeader("Content-Disposition", "attachment; filename=" + DateTime.Now.ToString("_yyyyMMdd_HHmmss") + ".xls");
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            Response.ContentType = "application/ms-excel";
            StringWriter sw = new StringWriter();
            HtmlTextWriter htw = new HtmlTextWriter(sw);
            gv.RenderControl(htw);
            Response.Write(sw.ToString());
            Response.Flush();
            Response.End();
        }
        else
        {
            Response.Write("没有数据");
        }
    }

解决方案 »

  1.   

    上面给错了调用函数
    应该是
    ExcelOut(this.gvw_test);才对
    当点击导出EXCEL报表的时候出现的错误是类型“GridView”的控件“gvw_test”必须放在具有 runat=server 的窗体标记内。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Web.HttpException: 类型“GridView”的控件“gvw_test”必须放在具有 runat=server 的窗体标记内。源错误: 
    行 45:             StringWriter sw = new StringWriter();
    行 46:             HtmlTextWriter htw = new HtmlTextWriter(sw);
    行 47:             gv.RenderControl(htw);
    行 48:             Response.Write(sw.ToString());
    行 49:             Response.Flush();
     源文件: d:\我的资料库\Documents\Visual Studio 2008\WebSites\comeback\Default.aspx.cs    行: 47