类型“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
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
}