我们在应用程序代码中使用一小部分Excel导出代码,使用以下代码将XML控件从ASP页导出为Excel格式:
Public Shared Sub Export(ByRef xml As Xml, ByVal filename As String)
Dim response As HttpResponse = HttpContext.Current.Response()
response.Clear()
response.AddHeader("content-disposition", "attachment;filename=" & filename & ".xls")
response.ContentType = "application/vnd.ms-excel"
Dim s As System.IO.StringWriter = New System.IO.StringWriter
Dim htw As HtmlTextWriter = New HtmlTextWriter(s)
xml.RenderControl(htw)
response.Write(s.ToString)
response.End()
End Sub
这一切都很好,只是我们遇到了一个相当令人沮丧的错误。如果XML控件中有链接,则再次调用导出代码。我们有一个按钮,从.aspx页面中显示“导出到excel”,该页面只需调用
ExcelExport.Export(Xml1, "MyFileName")
在一个
LinkButton
单击事件。
以下是基于表单提交(选择筛选器)的事件顺序
-
输入筛选器
-
提交表单
-
出现页面加载
-
发生提交按钮单击事件
单击导出按钮
到目前为止过得很愉快,但在上一个事件之后,当您单击XML控件(呈现的xslt页面)中的超链接时,就会发生这种情况。
因此,用户提交一个表单,该表单在一个可查看的xslt页面中加载xml控件。然后他们单击“导出到excel”,这将给他们提供excel中的页面,然后他们单击xslt页面,例如一个链接,但是excel的保存对话框再次出现。我们经历了一系列的事件,如果我们不调用excel导出器,它会像正常一样经历一系列的事件。如果我们调用excel导出器,它将经历页面加载事件,并意外进入链接按钮单击事件。
我们已经想尽一切办法试图解决这个错误,但没有任何运气。你知道为什么会这样吗?