@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

CSVファイルのダウンロード

投稿者投稿内容
ひでたつ
常連さん
会議室デビュー日: 2002/08/09
投稿数: 28
お住まい・勤務地: 岩手県
投稿日時: 2004-12-03 08:12
GOH さんが System.Web.UI.WebControls.HyperLink を使っていると仮定して、
Target プロパティに _top をセットしてみて下さい。

そうでなければ、HTML で下記のように書くとどうでしょうか?
<a href="リンク先のURL" target="_top">ダウンロード</a>
GOH
会議室デビュー日: 2004/02/13
投稿数: 8
投稿日時: 2004-12-03 09:18
HyperLinkは使っておりません。

方法としてはSystem.Web.UI.WebControls.Buttonに
カネさんと同じようなコードを書いて
submitした戻りにダウンロードさせるようにしています。

Response.Clear()
Response.AddHeader("Content-Disposition", "attachment;filename=test.csv")
Response.ContentType = "application/octet-stream"
Response.ContentEncoding = System.Text.Encoding.GetEncoding("Shift-JIS")

strData = 内容
Response.Write(strData)
Response.Flush()

そもそもsubmit時に行おうとしていることが間違っているのでしょうか?
ひでたつ
常連さん
会議室デビュー日: 2002/08/09
投稿数: 28
お住まい・勤務地: 岩手県
投稿日時: 2004-12-03 12:16
あ、submit の時でしたか。
そうなるとちょっと分かりません。

すみません、よく読まずにレスしてしまいました。m(_ _)m
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-03 21:44
 Response.Flushの後に、Response.Endを入れると、どうなりますか?
 HttpResponse.Endメソッドは、その時点でアプリケーションの実行を停止します。このメソッド呼び出し以降は実行されません。反対にいうと、Endメソッドをコールしていないと、必要なデータの後ろにそのページのレンダリングデータという、余分なデータを付加してクライアントに返します、ということです。

_________________
水戸黄門
会議室デビュー日: 2005/02/12
投稿数: 11
投稿日時: 2005-02-14 05:55
見ている人が多いけど、解決に至っていなくて
終わっているので、私の経験談を書いておきます。

私の場合は、submitしてダウンロード後に、javascript、
doPostBackが動かなくなってしまって、はまりました。

ダウンロードの保存ダイアログが出るために、画面が更新されない為だと
どこかに書いてありました。(初歩的なことらしいです。)

解決方法
1.Formの最後に隠しiframeを付ける。
   </form>
   <iframe id="csvdummy" name="csvdummy"
        width="0" height="0" scrolling="no"
        frameborder="0"></iframe>
   </body>
</HTML>

2.Page_Load時にダウンロード処理を行うかどうかのフラグ的な
  ものとして<input type=hidden>を作る。
    <input type="hidden" name="download" id="download" value="">
3.ボタンのonclickでjavascript:downloadCsv()を呼ぶ。
4.javascriptでtargetを隠しiframeにする。
     function downloadCsv() {
        Form1.download.value = "downloadCsv";
        Form1.target = "csvdummy";
        Form1.submit();
        Form1.download.value = ""
        Form1.target = "";
     }
5.Page_loadでForm1.download.valueに"downloadCsv"があれば
  CSVのダウンロード処理を行う。
6.CSVのダウンロード処理は、以前の投稿してある通り。
  (それか、検索すればいろいろ出てくると思います。)

最初に投稿された方の解決になっていないかもしれませんが
載せておきます。

「こんなの当然のことだ」と言われる方がいましたら
初心者ですので、ご容赦を。。。

スキルアップ/キャリアアップ(JOB@IT)