在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
昨天在做项目的时候遇到个小问题,如何将自定义控件中的Gridview的数据导出成Excel. 代码如下: Response.Clear(); Response.Buffer = true; Response.Charset = "GB2312"; Response.AppendHeader("Content-Disposition", "attachment;filename=FileName.xls"); // 如果设置为 GetEncoding("GB2312");导出的文件将会出现乱码!!! Response.ContentEncoding = System.Text.Encoding.UTF7; Response.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 System.IO.StringWriter ws= new System.IO.StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); gvUsers.RenderControl(oHtmlTextWriter); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); 但是有个问题.该代码只能建立在当前页面是一个Page的情况下使用. 也就是说如果你把要导出的Gridview放在一个页面下使用上面的代码是可以成功的. 但是我的页面里有一个自定义的WebControl,要导出的Gridview是放在该自定义的WebControl中的,导出成Excel代码依然为上面代码,这时该会报以下错误: 怎么解决呢? 我们只好这样做: 在放这个自定义控件的Page下重写Page的VerifyRenderingInServerForm方法. Page下增加如下代码: public override void VerifyRenderingInServerForm(Control control) {} 那么这个方法是干什么的呢? 该方法是确认在运行时为指定的 ASP.NET 服务器控件呈现 HtmlForm 控件。 那为什么要重写该方法而不去做任何事情呢?哪位大虾解释下.看了msdn的帮助依然不懂. |
请发表评论