Jam*_*123 1 javascript vb.net asp.net ajax
我在更新面板中单击按钮时生成Excel文件.它抛出了一个解析错误.请看下面的代码.
如果我将按钮保持在更新面板之外,它工作正常.为什么它不在更新面板中工作?
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader("Content-Disposition",
String.Format("attachment;filename={0}", filename))
Response.Clear()
Response.BinaryWrite(WriteToStream.GetBuffer)
HttpContext.Current.ApplicationInstance.CompleteRequest()
Private Function WriteToStream() As MemoryStream
'Write the stream data of workbook to the root directory
Dim file As MemoryStream = New MemoryStream
hssfworkbook.Write(file)
Return file
End Function
Run Code Online (Sandbox Code Playgroud)
您不应该覆盖更新面板的响应.ASP更新面板的工作方式,整个页面执行,更新面板中的部分从响应中提取并发送到客户端(作为对XHRequest的响应).执行此操作时Response.BinaryWrite,您将删除服务器希望能够解析其要发送的新标记的标准输出.
使按钮触发更新面板的唯一原因是您要更改该面板中的内容.否则,只需确保该按钮不是面板的触发器.如果按钮必须保留在面板中,请将其添加到面板的触发部分PostBackTrigger(注意缺少该按钮Async).
例如:
<asp:UpdatePanel ID="somePanel" UpdateMode="Conditional" runat="server">
</ContentTemplate>
changing content?
<asp:Button id="someButton" Text="click me!"
OnClick="someButton_Click" runat="server">
other changing content?
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="someButton" />
</Triggers>
</asp:UpdatePanel>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2506 次 |
| 最近记录: |