2017-02-01 15 views
1

asp.netとC#でajaxを使用するWebアプリケーションがあります。今、ASPボタンをクリックすると、CodeBehind(ページ名はoriginal.aspx)からPDFビューアにレポートビューアをエクスポートしようとしています。 UpdatePanel内にボタンを置いた場合を除いて、すべてが完璧に機能します。だから、インターネットを検索した後、Response.BinaryWrite、Response.FlushなどがUpdanePanelで動作しないことがわかりました.PostBackTriggerとしてボタンを指定してから、そのページが多くのコントロールを持っているためにUpdatePanelを使用することを怠っていない限りエクスポート手順に達する前に多くのステップを実行しています。

私は、PDFにエクスポートするためのコードを別のページのページロードイベント(Default.aspxと言うことができます)に転送し、Response.Redirectを使用してエクスポートページの新しいタブを開くと考えました。

本当に起こったのは、PDFが自動的に(元のページ(original.aspx)にありながら)リダイレクトなしに - 自動的にダウンロードされるということですが、UpdateProgressはアクティブにされ、GIF画像を表示することはありませんでした。ただループを続けてください。コードからUpdateProgressを削除すると、すべてが期待通りに実行されます。 UpdatePanelの中​​にあるボタン(PostBackTriggerではなく非同期)とCodeBehindからのResponse.Redirectを使用して、ファイルをエクスポートしてダウンロードします。

UpdateProgressプロセスを無効にするためのソリューションはありますか?この問題の特定のクリック偶数または他のソリューションのみを使用したコードの背後からは、Response.Redirect Update Updateの使用中に進行中C#.NET

答えて

1

あなたが全ページの代わりに、ファイルのダウンロードの問題を引き起こし部分ページ更新をポストバックするPostBackTrigger内のコントロールのIDを設定することができます。

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    ... 
    <Triggers> 
     <asp:PostBackTrigger ControlID="DownloadButton" /> 
    </Triggers> 
</asp:UpdatePanel> 
関連する問題