我有一个使用ajax与asp.net和C#的Web应用程序。现在,我在单击ASP按钮时尝试将CodeBehind(页面名称为original.aspx)的报表查看器导出为PDF文件。除非我把按钮放在UpdatePanel中,否则一切都很完美。所以在搜索互联网之后,我发现Response.BinaryWrite,Response.Flush等不能使用UpdanePanel,除非我将按钮指定为PostBackTrigger然后忽略了使用UpdatePanel的目的,因为页面有在到达导出步骤之前,许多控件和许多步骤都在进行。
所以我将用于导出的代码转移到另一页上的Page Load事件(比如说Default.aspx),并考虑使用Response.Redirect打开导出页面的新选项卡。
实际发生的是自动下载PDF(虽然仍在原始页面(original.aspx)中)并且没有重定向 - 其中很好 - 但UpdateProgress被激活,从未停止显示gif图片。继续循环。从代码中删除UpdateProgress时,一切都按预期运行。当按钮位于UpdatePanel内部时(异步而不是PostBackTrigger)并使用CodeBehind中的Response.Redirect,导出和下载文件。
是否有任何禁用解决方案,从后面的代码中删除UpdateProgress进程只针对此问题的特定点击或任何其他解决方案?
答案 0 :(得分:1)
您可以在 PostBackTrigger 中设置控件的ID以回发整页,而不是部分页面更新导致文件下载问题。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
...
<Triggers>
<asp:PostBackTrigger ControlID="DownloadButton" />
</Triggers>
</asp:UpdatePanel>