2009-05-26 70 views
0

我正在尝试导出excel的数据网格。出于某种原因,已知的工作方法不起作用。导出是从用户控件完成的。我的页面(default.aspx)使用母版页,页面上有一个用户控件,它实际上有我想要导出的数据网格。将datagridview导出为Excel的问题

这里是我的ASCX代码:

Response.ClearContent(); 
Response.AddHeader("content-disposition", "attachment; filename=MyExcelFile.xls"); 
Response.ContentType = "application/excel"; 
StringWriter sw = new StringWriter(); 
HtmlTextWriter htw = new HtmlTextWriter(sw); 
_gvwResults.RenderControl(htw); 
Response.Write(sw.ToString()); 
Response.End(); 

在我的Default.aspx(页面持有ASCX)是这样的代码:

public override void VerifyRenderingInServerForm(Control control) 
{ 
    /* Confirms that an HtmlForm control is rendered for the specified ASP.NET 
     server control at run time. - required to export file */ 
} 

这里的错误我收到: Sys系统。 Webforms.pagerequestmanagerparsererrorexception。从服务器收到的消息可能不会被解析。此错误的常见原因是响应通过调用Response.Write(),响应过滤器,httpmodules或服务器跟踪已启用而被修改时。

任何想法?这段代码应该可以工作,但几乎就好像响应对象没有被清除。想法?

回答

0

原来,由于组合框已被拼接,导出没有发生。事件正在触发,但是,正如错误消息所述,它是response.writing到现有页面上,因此抛出错误,这将不允许呈现新文档(本例中为xls)。设置组合框在页面上执行回发并将其解除混淆后,导出就开始工作了。