Хорошо, я видел этот вопрос в нескольких местах, но так и не получил ответ, который помог или что я понял.Я только начинаю работу на ASP.net и использую VS 2010 на платформе 4.0.
Я нашел в Интернете некоторый код, позволяющий генерировать файл Excel .xls из набора данных.
Код приведен ниже, но когда я запускаю этот код с кнопки вне панели обновления ajax, он работает отлично.Если я выполню код с кнопки внутри панели обновлений (где она мне нужна), я получу следующее:
Sys.WebForms.PageRequestManagerParserErrorException Не удалось проанализировать сообщение, полученное с сервера.
Я попробовал две версии показанного заголовка и попробовал completerequest () вместо response.end.
Может кто-нибудь объяснить мне, почему это не работает на панели обновлений и как я могу заставить ее работать на панели обновлений?
Заранее спасибо!
Protected Sub ExportDataSetToExcel(ByVal ds As DataSet, ByVal filename As String)
Dim response As HttpResponse = HttpContext.Current.Response
' first let's clean up the response.object
response.Clear()
response.Charset = ""
' set the response mime type for excel
response.ContentType = "application/vnd.ms-excel"
'response.ContentType = "application/octet-stream"
response.AddHeader("Content-Disposition", "attachment;filename=""" & filename & """")
' create a string writer
Using sw As New StringWriter()
Using htw As New HtmlTextWriter(sw)
' instantiate a datagrid
Dim dg As New DataGrid()
dg.DataSource = ds.Tables(0)
dg.DataBind()
dg.RenderControl(htw)
response.Write(sw.ToString())
'HttpContext.Current.ApplicationInstance.CompleteRequest()
response.End()
End Using
End Using
End Sub