未解之Bug (1) : 必须放在具有 runat=server 的窗体标记内
在试图将GRIDVIEW中的数据导出至EXCEL时抛出异常:
类型“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