0

你终于看到了,我有 2 个填充了不同数据的数据表,现在我有一个按钮,允许我将一个数据表发送到 .CSV Excel 文件,如下所示:

string name="Dat_Agrup";
HttpContext context = HttpContext.Current;
context.Response.Clear();

foreach (System.Data.DataColumn column in _myDataTable.Columns)
{
    context.Response.Write("name"+ ",");
}

context.Response.Write(Environment.NewLine);

foreach (System.Data.DataRow row in _myDataTable.Rows)
{
    for (int i = 0; i < _myDataTable.Columns.Count; i++)
    {
        context.Response.Write(row[i].ToString().Replace(",", string.Empty) + ",");
    }

    context.Response.Write(Environment.NewLine);
}

context.Response.ContentType = "text/csv";
context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name + ".csv");
context.Response.End();

现在这段代码运行完美,它可能缺少一些行,比如我声明数据表的地方,但相信我它可以工作:D,现在如果我想在同一个 action_button 中使用相同的代码保存第二个数据表是那些不起作用的,我用这个下一个代码:

string name2="Centroids";
HttpContext context2 = HttpContext.Current;
context2.Response.Clear();

foreach (System.Data.DataRow row in _myDataTable2.Rows)
{   
    for (int i = 0; i < _myDataTable2.Columns.Count; i++)
    {
        context2.Response.Write(row[i].ToString().Replace(",", string.Empty) + ",");
    }

    context2.Response.Write(Environment.NewLine);
}

context2.Response.ContentType = "text2/csv";
context2.Response.AppendHeader("Content-Disposition", "attachment; filename=" + name2 + ".csv");
context2.Response.End();

它只保存第一个数据表并忽略其余代码任何人都可以解释发生这种情况的原因或原因,非常感谢任何形式的帮助。

4

1 回答 1

1

原因是您的第一个代码片段中的这一行:

context.Response.End();

HttpResponse.End()方法“停止执行页面,并引发 EndRequest 事件”。

如果您想继续处理代码,则不能在最后调用该方法。

于 2012-07-05T16:53:23.157 回答