在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();
    }

在ASP.Net中使用C#为弹出窗口输出CSV文件

只需添加一个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

怪癖模式教程是一个有用的介绍,但为了实现,我不会使用这种方法,而是使用一种更"不引人注目"的方法(但一旦你掌握了弹出窗口的基本原理,我稍后会对此进行研究)。