0

CSV エクスポートで [ファイルの保存] ダイアログ ボックスを表示するのに苦労しています。ファイルに保存できますが、ユーザーは保存できません。コードのどこが間違っているのか、誰にもわかりますか?

string filename = Server.MapPath("~/download.csv");
StreamWriter sw = new StreamWriter(filename, false);

int iColCount = dt.Columns.Count;
for (int i = 0; i < iColCount; i++)
{
    sw.Write(dt.Columns[i]);
    if (i < iColCount - 1)
    {                
        sw.Write(",");
    }
}
sw.Write(sw.NewLine);

foreach (DataRow dr in dt.Rows)
{
    for (int i = 0; i < iColCount; i++)
    {
        if (!Convert.IsDBNull(dr[i]))
        {
            sw.Write(dr[i].ToString());
        }
        if (i < iColCount - 1)
        {
            sw.Write(",");
        }
    }
    sw.Write(sw.NewLine);
}
sw.Close();

Response.Clear();
Response.ContentType = "application/csv";
Response.AddHeader("Content-Disposition", "attachment; filename=download.csv");
Response.WriteFile(filename);
Response.Flush();
Response.End();

ダイアログ ボックスを表示した Content Disposition 行を考えましたが、他に何かする必要があるかもしれません。

ありがとう

4

3 に答える 3

2

ああ、問題が何であるかを発見しました...

更新パネルにボタンがありますが、応答オブジェクトが更新パネルで機能しないことに気付きませんでした。

ダウンロードボタンをトリガーにしたところ、うまく機能するようになりました。

<Triggers>
    <asp:PostBackTrigger ControlID="btnDownload" />
</Triggers>

とにかく提案をありがとう

于 2012-06-22T16:19:53.863 に答える
0

Response.Clear()呼び出し後にコンテンツとヘッダーをクリアしてみてください。

    Response.ClearContent();
    Response.ClearHeaders(); 
于 2012-06-22T16:06:48.763 に答える
0

私はあなたが必要だと確信しています

Response.Write()

Response.End()
于 2012-06-22T15:07:46.893 に答える