在ASP.Net中使用C#为弹出窗口输出CSV文件
本文关键字:窗口 输出 文件 CSV Net ASP | 更新日期: 2023-09-27 18:00:03
我尝试在弹出窗口中输出CSV文件。我可以在主窗口中输出CSV,但不能在弹出窗口中输出。我使用相同的代码。例如我使用表单输出CSV文件。当这个窗体是主窗口时,可以输出CSV文件。当我将此表单用作弹出窗口时,它无法输出。我该怎么办?
这是我的CSV输出函数:
public void OutputCSV(DataTable dtValue, string strFilename)
{
if (TextUtility.IsNullOrEmpty(strFilename))
{
throw new I01Exception(Enums.ExType.System, "9909_35");
}
DataTable dt = dtValue;
StringBuilder sb = new System.Text.StringBuilder();
string strCh = ",";
//項目名
for (int k = 0; k < dt.Columns.Count; k++)
{
sb.Append("'"" + dt.Columns[k].Caption + "'"" + strCh);
}
sb.Remove(sb.Length - 1, 1);
//データ
foreach (DataRow row in dt.Rows)
{
sb.AppendLine(string.Empty);
for (int i = 0; i < dt.Columns.Count; i++)
{
sb.Append("'"" + row[i].ToString() + "'"" + strCh);
}
}
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.AppendHeader("content-disposition", string.Format("attachment; filename={0}", HttpUtility.UrlEncode(strFilename + ".csv")));
HttpContext.Current.Response.ContentType = "text/comma-separated-values";
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("shift-jis");
HttpContext.Current.Response.Write(sb.ToString());
HttpContext.Current.Response.Flush();
HttpContext.Current.ApplicationInstance.CompleteRequest();
HttpContext.Current.Response.End();
}
只需添加一个href,其中tartget="_new"指向网页中的url。如果你需要在窗口中弹出窗口,最好的选择是使用jquery弹出库,它们采用external-url。如果您试图使用本地javascript弹出窗口,这是一个仅用于文本的对话框??
根据Simon Thompson的回答(好回答Simon)。
我认为你的做法是错误的。弹出窗口不是在服务器端创建的,而是在客户端以纯html或javascript创建的。
例如:
<a href="http://google.com" target="_blank">open google in a popup</a>
以下是有关弹出窗口的更多详细信息:http://www.quirksmode.org/js/popup.html
怪癖模式教程是一个有用的介绍,但为了实现,我不会使用这种方法,而是使用一种更"不引人注目"的方法(但一旦你掌握了弹出窗口的基本原理,我稍后会对此进行研究)。