QA@IT

asp.netでファイルダウンロード時のカーソル変更

5247 PV

いつも参考にさせていただいております。

ASP.Netでボタンクリック時にファイルを作成し、ダウンロードしています。
ファイル作成に少々時間がかかるので、待っている間カーソルを変更したいのですが、
ダウンロード時にResponse.End()としているため、カーソルをwait状態からdefaultに戻す
タイミングがありません。
(waiteにはボタンクリック時にJavascriptでセット)
ダウンロードするファイルはExcelファイルでサードパーティのツールで作成しています。
最終的にResponse.End()で出力します。

何かいい方法はありますでしょうか?

回答

ASP.Netでボタンクリック時にファイルを作成し、ダウンロードしています。

具体的にどうやっているのか書いてないので(最初に書いてくださいね)想像ですが・・・

ボタンクリックでポストバックし、ボタンクリックのイベントハンドラでファイルを作成し、WriteFile または TransmitFile メソッドでそのファイルを応答出力ストリームに書き込んだ後、HttpResponse.End メソッドで強制終了しているのだと理解してレスします。

そのようにした場合、ボタンがクリックされてポストバックがかかり、サーバーから送られてくるのは HTTP 応答ヘッダとダウンロードされるファイルのバイト列だけになります。

ポストバックした応答で期待する処置ができるのであれば、ファイルをダウンロードする別のページを作ってそれを呼び出すようにしてはいかがですか?

具体例は以下のページが参考になると思います。

ダウンロードは別ウィンドウで
http://surferonwww.info/BlogEngine/post/2010/08/06/File-download-using-separate-page.aspx

上記の方法が質問者さんの目的に適わない場合は、どこが問題かを詳しく書いていただければ、別の手段を考えてみます。

#質問する際は、一番最初に、何を作っているのか(ASP.NET Web Forms? MVC? その他?)、ご自分の環境(OS, .NET, IIS, Visual Studio のバージョン、DB サーバーとそのバージョン、ブラウザは何かなど)に関する情報を最低書いていただけませんか? 適切に情報が提供されていれば、回答者が質問者さんの状況を的確に把握でき、タイムリーで的を得た回答が得られるということで、質問者さんにもメリットがあります。

編集 履歴 (0)
  • ご回答ありがとうございました!
    そして大変失礼いたしました。
    環境としては、ASP.NETでWebFormを作成、Windows8.1でVSは2013、IEは11です。
    おっしゃるとおりにボタンのクリックイベントでサーバー側でファイルを作成し、最後にResponse.Endしています。
    教えていただいたようにダウンロード用画面のさく
    -
  • 教えた頂いたダウンロード画面の使用も考えましたが、他の帳票がすべてこの方式で出力しているため、合わせたかったんですよね。ですが時間がかかるので、カーソルだけ変えたいなと思ってしまって。無理っぽいですよね・・・。 -
  • 今のやり方を変えないでやりたいことができることはないと思います。質問の一番最初に、現在はどのようにしているのか、それをどこまで変えるつもりがあるのか、書いておいていただけたらと思います。 -
  • お礼が遅くなり申し訳ございません。今後は質問のしかたについて具体的にお伝えできるよう気を付けます。色々考えていただき、ありがとうございました! -
  • 別の案も考えてみましたので紹介しておきます。 http://surferonwww.info/BlogEngine/post/2015/04/01/how-to-show-updatepregress-while-creating-the-file-to-download.aspx
    今のやり方を変えないと使えないですが、ご参考まで。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。