我有一个web应用程序,它将ajax与asp.net和C#结合使用。现在,我正试图在单击ASP按钮时将CodeBehind(页面名称为original.aspx)中的报表查看器导出为PDF文件。除了我把按钮放在UpdatePanel中之外,一切都很完美。因此,在搜索互联网后,我发现Response.BinaryWrite、Response.Flush等不适用于UpdanePanel,除非我将按钮指定为PostBackTrigger,然后忽略了使用UpdatePanel的目的,因为页面在到达导出步骤之前有很多控件和步骤
因此,我将导出为PDF的代码转移到另一个页面上的页面加载事件(比如Default.aspx),并考虑使用响应。重定向以打开导出页面的新选项卡
真正发生的事情是,PDF会自动下载(仍在原始页面(original.aspx)中),无需重定向-这很好-但UpdateProgress已激活,从未停止显示gif图片。继续循环。从代码中删除UpdateProgress时,一切都按预期运行。当按钮位于UpdatePanel(async而非PostBackTrigger)内并使用CodeBehind的Response.RRedirect时,将导出和下载文件
是否有任何解决方案可以从代码隐藏中禁用、终止UpdateProgress进程,只需单击一次,甚至可以使用任何其他解决方案来解决此问题?
您可以在PostBackTrigger内将控件的ID设置为回发整个页面,而不是导致文件下载问题的部分页面更新。
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
...
<Triggers>
<asp:PostBackTrigger ControlID="DownloadButton" />
</Triggers>
</asp:UpdatePanel>