ContentPlaceHolder必须放在具有 runat=server 的窗体标记内

类型“GridView”的控件“ctl00_contentBody_gridView4Export”必须放在具有 runat=server 的窗体标记内。

 页面是从母版页继承的,而gridview所在的ContentPlaceHolder确定是放在form中的。

以前只有控件未放在form中才会抛出同类异常。

 1 protected void btExport_Click(object sender, EventArgs e)
 2     {
 3         // get dataset
 4         SRMReportService.ReportService srv = ServiceFactory.ReportService();
 5         DataSet ds = srv.QueryAllData_Vendor_CheckAmount_Summary(
 6             (string)this.ViewState["PlantCode"],
 7             (string)this.ViewState["PeriodCode"],
 8             (string)this.ViewState["VendorCode"]);
 9 
10         // bind to gridview
11         this.gridView4Export.DataSource = ds;
12         this.gridView4Export.DataBind();
13 
14         // export
15         this.ExportToExcel(this.gridView4Export);
16     }
17 
18 
19 
20 
21     public void ExportToExcel(System.Web.UI.Control ctl)
22     {
23 
24         Response.AppendHeader("Content-Disposition"
25             "attachment;filename=Excel.xls");
26         Response.ContentEncoding = 
27             System.Text.Encoding.GetEncoding("GB2312");
28         Response.ContentType = "application/ms-excel";
29         
30         System.Globalization.CultureInfo myCItrad = 
31             new System.Globalization.CultureInfo("ZH-CN"true);
32         System.IO.StringWriter tw = 
33             new System.IO.StringWriter(myCItrad);
34         try
35         {
36             System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
37             ctl.RenderControl(hw);
38             Response.Write(tw.ToString());
39             Response.End();
40         }
41         finally
42         {
43             tw.Close();
44         }
45     }
46 

在您的codebehind文件中,继承自page基类的那个页面类中复制如下代码进去:
    public override void VerifyRenderingInServerForm(Control control)
    {
        // Confirms that an HtmlForm control is rendered for
    }

posted @ 2008-08-13 16:23  瑞尼书苑  阅读(401)  评论(0编辑  收藏  举报