Панель обновления ASP.Net с «Не удалось проанализировать сообщение, полученное с сервера» - PullRequest
1 голос
/ 14 июля 2011

Хорошо, я видел этот вопрос в нескольких местах, но так и не получил ответ, который помог или что я понял.Я только начинаю работу на 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

Ответы [ 3 ]

1 голос
/ 14 июля 2011

Попробуйте это:

response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest()

Не звоните reposne.End()

0 голосов
/ 09 октября 2012

Извините, я знаю, что немного поздно, но нашел ответ прямо сейчас.

Попробуйте этот ответ.Я разрешаю это, делая то, что здесь сказано, и это прекрасно работает

0 голосов
/ 14 июля 2011

проверить этот образец:

Как загрузить / открыть файл, который я получаю по пути к серверу?

показывает, как написать обработчик для DL файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...