C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ASP.NETの"EXCELダウンロード"ボタン押下時の2度


(過去ログ 134 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■79068 / inTopicNo.1)  ASP.NETの"EXCELダウンロード"ボタン押下時の2度
  
□投稿者/ SOSOS (1回)-(2016/03/05(Sat) 02:31:24)

分類:[ASP.NET (C#)] 

2016/03/05(Sat) 02:35:59 編集(投稿者)
2016/03/05(Sat) 02:35:15 編集(投稿者)
2016/03/05(Sat) 02:33:45 編集(投稿者)

<pre><pre>ASP.NET(Webフォーム/C#)にて、
以下のようにExcelファイルをダウンロードする処理を実行するボタン押下時に
2度押しの制御を行いたいのですが、ファイルダウンロードのレスポンスしか返ってこないため(※理由は、以降"Bダウンロード&画面更新URL"に記載されています)、ずっと"処理中"のままとなります。

同じような経験をされた方はいますでしょうか?
どのように対応されたかを教えていただきたいです。

--------------------------------
【実装した内容】
@(C#側※webフォーム側)
protected void Button1_Click(object sender, EventArgs e)
{
    Response.WriteFile(@"C:\work\sample.xlsx");
    Response.ContentType = "application/vnd.ms-excel";
    Response.HeaderEncoding = Encoding.GetEncoding("shift_jis");
    Response.ContentEncoding = Encoding.GetEncoding("shift_jis");
    Response.AddHeader("content-disposition", "attachment; filename=sample.xlsx");
    Response.Flush();
    Response.End();
}

AJavaScriptで2度押し防止のサンプル
http://d.hatena.ne.jp/itaosan/20061225/1167025092
→この制御を実装し、ダウンロードボタンを押下したところ、永遠に"処理中です。。。"になる。
--------------------------------

また、以下の参考URLにて、
ダウンロードと同時に画面更新も同時に行うサンプルがあり、
そこの"質問&回答"にて私がやりたいことをこのサンプルを利用し実現した方もいるようですが、
どのように実現したのかが、私の技術力ではわかりませんでした。
具体的な対応内容を理解できる方いますでしょうか?
------------------------------------------------
Bダウンロード&画面更新URL
   http://niyodiary.cocolog-nifty.com/blog/2009/07/aspnetc-20a1.html 

(抜粋)
画面でボタン押下時に「しばらくお待ちください」のポップアップメッセージを出し
Excel出力が終わったらポップアップを消す、という動作をさせたくて

「例2 隠しiframeタグ内にダウンロードページを開く」
の方法を参考にさせていただきました。

Excelの出力もでき、ポップアップも消せたのですが・・・
------------------------------------------------

簡潔な質問になってしまい、
申し訳ありませんが、よろしくお願いします。

引用返信 編集キー/
■79069 / inTopicNo.2)  Re[1]: ASP.NETの"EXCELダウンロード"ボタン押下時の2度
□投稿者/ WebSurfer (857回)-(2016/03/05(Sat) 07:06:34)
No79068 (SOSOS さん) に返信

> Excelの出力もでき、ポップアップも消せたのですが・・・

ということで、やりたいことはできていて、今の課題は何なのか分かりま
せんが・・・

ダウンロードするファイルをサーバー側で作成するのに時間がかかるので、
ファイル作成中であることをユーザーに知らせたいということであれば、
UpdatePanel と UpdateProgress コントロールを使って、以下のようにし
てはいかがですか?

Download の際 UpdateProgress を表示
http://surferonwww.info/BlogEngine/post/2015/04/01/how-to-show-updatepregress-while-creating-the-file-to-download.aspx

二度推し防止は ScriptManager, UpdatePanel を利用すると容易に出来ます。

二度押し防止
http://surferonwww.info/BlogEngine/post/2010/12/12/Cancel-request-using-PageRequestManager.aspx

なお、Response.Flush(), Response.End() は使わないほうがいいです。前者
は chunked コーディングになり(それは意図してないはず)、後者は非推奨
です。HTTP ハンドラを使用することをお勧めします。

ダウンロードは HTTP ハンドラで
http://surferonwww.info/BlogEngine/post/2013/02/16/use-http-handler-for-downloading-files.aspx
引用返信 編集キー/
■79072 / inTopicNo.3)  Re[2]: ASP.NETの"EXCELダウンロード"ボタン押下時の2度
□投稿者/ SOSOS (2回)-(2016/03/05(Sat) 09:14:22)
>>Excelの出力もでき、ポップアップも消せたのですが・・・
> ということで、やりたいことはできていて、今の課題は何なのか分かりま
> せんが・・・

回答ありがとうございます。
伝わりにくい表現になって申し訳ありません。
先のURLの下のQA部分に"画面更新&ダウンロード"のサンプルをもとに実現した方がいるということを伝えたかったので、
私個人がやりたいことができたわけではないです。


朝早くから回答していただいてありがとうございます。、
私事ですがこれから用事があるため、
夜に記載していただいたURLをもとに検証させていただきます。

ありがとうございます。
引用返信 編集キー/
■79073 / inTopicNo.4)  Re[3]: ASP.NETの"EXCELダウンロード"ボタン押下時の2度
□投稿者/ SOSOS (3回)-(2016/03/05(Sat) 23:06:26)
WebSurfer さん

教えていただいた内容で期待通りの動作をさせることができました。
ありがとうございます。

>なお、Response.Flush(), Response.End() は使わないほうがいいです。前者は chunked コーディングになり(それは意図してないはず)、後者は非推奨です。HTTP ハンドラを使用することをお勧めします。

勉強になりました。
上記に関してもすべて取り入れさせていただきました。

解決済みとします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -