我要转换为Excel代码时遇到问题。我正在.NET 4.0中的网站项目上工作,并且为此创建了一个类,该类可以执行以下操作(基于 http://mattberseth.com/blog/2007/04/export_gridview_to_excel_1.html ): 通用标签

我从一个包含添加到页面上显示的GridView的按钮的用户控件中调用此类。这可以按预期方式工作-单击按钮,将为您提供下载选项,以打开或保存包含GridView数据的excel电子表格。

但是,当我从另一个GridView内的linkbutton调用它时,我想构建一个动态的Gridview来包含数据并将其导出。当我这样做时,我从类中的Response.End调用中获得了ThreadAbortException。

问题1:当从用户控件中调用相同的代码时,为什么没有得到ThreadAbortException?用户控件是否拥有自己的线程或其他类型的上下文?

搜索发生ThreadAbortException时出现的错误,导致我尝试用ApplicationInstance.CompleteRequest()替换它。当我这样做时,我不再得到ThreadAbortException,但是这破坏了以前工作的用户控件-而不是包含网格数据的excel电子表格,它包含了包含页面的HTML,无论如何,它很容易抑制带有空捕获的错误。但是,它不能解决动态生成的GridView的直接调用,该代码会呈现javascript错误:“无法解析从服务器收到的消息。”

我很想了解这里到底发生了什么,但是无论理解如何,我都需要结果。我尝试过的所有其他方法(datagrid而不是GridView等)都遇到相同的问题,并且当归结为“接管”时,它们基本上是相同的 当前响应,并使用stringwriter和htmlwriter将数据呈现为具有excel contentType的响应。而且由于这显然可以在用户控件的上下文中起作用,所以我直言不讳地解释了为什么直接调用时它不起作用...

有帮助吗?

解决方案 3

问题实际上与excel导出完全无关。关键是“无法解析”错误。从这些链接中,我得到了关键,那就是网格事件仅导致部分回发事件:

http://forums.asp.net/t/1392827.aspx

http://forums.aspfree.com/net-development-11/gridview-footer-template-button-in-updatepanel-not-posting-back-236087.html

这说明了ThreadAbortException和“ ...无法解析”错误。解决方案是将其添加到ImageButton的OnPreRender中: 通用标签

其他提示

请尝试: HttpApplication.CompleteRequest() 按照: http://www.c6software.com/codesolutions/dotnet/threadabortexception.aspx

他们讨论了其他正在处理的html

使用此 通用标签

您可以使用div代替gridview1 通用标签

The event on which the Export to excel code is called, must make a full postback. the issue is because it does only a partial postback.

I had the same error and it got solved when i did a full postback.

Hope this helps someone.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top