ASP.Net更新面板“无法解析从服务器收到的消息”

时间:2011-07-14 01:51:30

标签: asp.net ajax

好吧,我已经看到过这个问题在几个地方被问到但从来没有真正得到一个有帮助或我理解的答案。我刚刚开始使用ASP.net并在4.0框架上使用VS 2010。

我在网上找到了一些代码,允许您从数据集生成.xls Excel文件。

代码如下,但是当我从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 个答案:

答案 0 :(得分:1)

试试这个:

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

请勿致电reposne.End()

答案 1 :(得分:0)

查看此示例:

How to download/open the file that I retrive by server path?

它显示了如何将处理程序写入DL文件。

答案 2 :(得分:0)

对不起,我知道有点晚了,但现在找到了答案。

尝试this回答。我解决它做这里所说的,它完美地运作