使用更新进度时更新面板内的Response.Redirect C#.NET

时间:2017-02-01 19:03:03

标签: c# asp.net ajax updatepanel updateprogress

我有一个使用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进程只针对此问题的特定点击或任何其他解决方案?

1 个答案:

答案 0 :(得分:1)

您可以在 PostBackTrigger 中设置控件的ID以回发整页,而不是部分页面更新导致文件下载问题。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    ...
   <Triggers>
      <asp:PostBackTrigger ControlID="DownloadButton" />
   </Triggers>
</asp:UpdatePanel>