- - PR -
C#でCSV作成・ダウンロード
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-07-12 12:59
はじめて投稿します。
早速の質問なのですが、今C#.NETにてCSVファイルを作成して、ダウンロードをおこなうプログラムを作っています。 .NET TIPSに掲載されていた、 [ASP.NET]データベースの内容をクライアントにダウンロード提供するには? http://www.atmarkit.co.jp/fdotnet/dotnettips/210aspdbdwnload/aspdbdwnload.html を参考にさせていただき作成しました。 が、別ウィンドウでダウンロード処理を行ってるためなのか、ダウンロードダイアログで保存または開くを押下した場合ウィンドウが閉じないのです。以前は閉じていたような気がしたのですが。。。 処理を簡単にお伝えします。 ・画面Aからダウンロードボタンを押下時にスクリプトで、別ウィンドウ画面B(実際のダウン ロード処理)をオープンする。 ・ダウンロードダイアログが表示される。 ・開くまたは保存ボタンを押下。 *ちなみにダイアログでキャンセルボタンを押下時はウィンドウが自然に閉じます。 別ウィンドウではなくRedirectでB画面に遷移してダウンロードを行うと、開く・保存 ともに画面がB画面に変わることもなく、Aの画面の上にダウンロードダイアログが表示されるのですが。。。 全くわからず困っています。誰かご存知の方いらっしゃいましたらよろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-07-12 16:33
原因に関しては既出なので過去ログを調べてもらうとして。
これが期待する動きなんですよね?ということなら、
RedirectでB画面に遷移してダウンロードを行う方式で、キャンセルした時に親画面が閉じちゃうことさえなければ、この方法で良いってことになりますよね。確認してみてください。閉じなければ問題は一応解決です。
ブラウザの種類やバージョンで挙動が違った気がします。かなり記憶があいまいなんですが、IEでもなんかのパッチ当てたら閉じるようになったとか、海外版のなんかのバージョンで閉じるだとか。なので動作確認テストはいろんなブラウザのいろんなバージョンで試してみる必要があると思います。大変ですけど… | ||||||||||||
|
投稿日時: 2005-07-12 19:42
早速の回答ありがとうございます。
説明不足でスミマセン。あと言い忘れていたのですが、Redirectでまずやりました。 1度エラーなどが発生して、Validatorでメッセージを表示するのですが、その後にRedirectで正常にダウンロードされてもメッセージが残ったままになってしまいます。 (きっとAの画面のページロードにダウンロード後に入らないからだと思っているのですが。。。) それなので、別ウィンドウで表示して回避することにしたのです。 ところが前回記述した通りウィンドウが閉じなくなってしまい。。。 あと本当に申し訳ありませんが、ぼのぼのさん 原因に関しては既出なので過去ログを。。。 とあったのですが、できたらその過去ログがどこにあるか教えていただけないでしょうか。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-07-12 20:12
過去ログくらい自分で検索したほうが良いのでは? | ||||||||||||
|
投稿日時: 2005-07-12 20:30
>過去ログくらい自分で検索したほうが良いのでは?
スミマセン。初めてで、どの原因についてのことなのかわからず。。。 次回からは気をつけます。 | ||||||||||||
|
投稿日時: 2005-07-12 20:48
特定の現象に対する原因というより、Webアプリケーションにおいてファイルのダウンロードという処理がどのように実現されるかをちゃんと理解しないと根本的な解決にはなりませn。
この掲示板のスレッド一覧の左上にスレッドディレクトリというリンクがあります。リンク先のWeb Applicationの下にダウンロードというカテゴリがあります。その中で、自分の抱えている問題に関係ありそうなものを片っ端から読んでみてください。 | ||||||||||||
|
投稿日時: 2005-07-12 21:55
たびたびの返事ありがとうございました。
なんとか解決できました。 本来はredirectでB画面に遷移して実際のダウンロードがしたかったのです。 そしてA画面が更新されずにB画面に遷移する前の画面のままになってしまったのが本来の もんだいでした。 それを回避するためにスクリプトでwindow.open()でB画面に遷移してダウンロードをおこなっていたのですが、ウィンドウが閉じない、またはダウンロード自体が行われないという現象がおきてしまったのです。 なので、最初のredirectでB画面に遷移するときにどうにかAの画面の処理を走らせてからBに遷移するようにできないかと考え以下のことを行ってみました。 @画面に隠しボタンを追加する。 Aダウンロードボタン押下イベント時に隠しボタン押下イベントに飛ぶように スクリプトで処理を入れた。 B隠しボタン押下イベントの処理にB画面へのredirectを行う。 この処理で何とか自分の本来行いたかった処理が出来ました。 つたない説明などでご迷惑をおかけしましたが、 これからもご教授よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-07-12 21:55
たびたびの返事ありがとうございました。
なんとか解決できました。 本来はredirectでB画面に遷移して実際のダウンロードがしたかったのです。 そしてA画面が更新されずにB画面に遷移する前の画面のままになってしまったのが本来の もんだいでした。 それを回避するためにスクリプトでwindow.open()でB画面に遷移してダウンロードをおこなっていたのですが、ウィンドウが閉じない、またはダウンロード自体が行われないという現象がおきてしまったのです。 なので、最初のredirectでB画面に遷移するときにどうにかAの画面の処理を走らせてからBに遷移するようにできないかと考え以下のことを行ってみました。 @画面に隠しボタンを追加する。 Aダウンロードボタン押下イベント時に隠しボタン押下イベントに飛ぶように スクリプトで処理を入れた。 B隠しボタン押下イベントの処理にB画面へのredirectを行う。 この処理で何とか自分の本来行いたかった処理が出来ました。 つたない説明などでご迷惑をおかけしましたが、 これからもご教授よろしくお願いします。 |