[英]export datatable to CSV with Save File Dialog box - C#
努力让我的CSV导出显示“保存文件”对话框。 它保存到文件ok,但不允许用户保存。 任何人都可以看到我的代码可能出错吗?
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();
我想到了内容处理行,它提出了对话框,但也许还有其他我需要做的事情。
谢谢
啊,已经发现问题是什么......
我在更新面板中有按钮,但没有意识到响应对象在更新面板中不起作用。
我将下载按钮设为触发器,现在效果很好。
<Triggers>
<asp:PostBackTrigger ControlID="btnDownload" />
</Triggers>
无论如何,谢谢你的建议
我很确定你需要
Response.Write()
后
Response.End()
您可以尝试在Response.Clear()
调用后清除内容和标题:
Response.ClearContent();
Response.ClearHeaders();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.