当前位置导航:炫浪网>>网络学院>>网页制作>>ASP.NET教程

Asp.net中的GridView导出遇到的问题

  对于GridView导出的内容的代码大致如下:

  Response.Clear();

  Response.Buffer = true;

  Response.Charset = "GB2312";

  Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls");

  Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");

  Response.ContentType = "application/ms-excel";

  this.EnableViewState = false;

  System.Globalization.CultureInfo myCItrad = new System.Globalization.CultureInfo("ZH-CN", true);

  System.IO.StringWriter oStringWriter = new System.IO.StringWriter(myCItrad);

  System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);

  this.grid1.RenderControl(oHtmlTextWriter);

  Response.Write(oStringWriter.ToString());

  Response.End();

  //grid1为表格的ID

  注:蓝色标识代码为出错的那行代码。

  OK,好不容易敲完代码,运行程序测试。蹬,报错了。

  问题一:类型“Grid1”的控件“gvCompareDetail”必须放在具有 runat=server 的窗体标记内。

  注:Grid1为表格的ID。

  查找网上的解决大致为:

  1)把Grid放到<form runat="server"></form>间。

  2)给Grid加标记runat="server"。

  查明前台Grid确实有加标记runat="server"的,而且表格是放在form中的。

  解决方法:在后台代码加上以下重写方法

  public override void VerifyRenderingInServerForm(Control control)

  { }

  查找MSDN说明,该函数的作用在于:确认在运行时为指定的 ASP.NET 移动控件呈现 Form 控件。

  语法:

  public override void VerifyRenderingInServerForm(

  Control control

  )

  参数

  control

  类型:System.Web.UI..::.Control

  必须位于 Form 控件中的 ASP.NET 移动控件。

相关内容
赞助商链接