导出为CSV时Gridview为空行

关于这个问题的进一步讨论促成了这个问题 。

以下是我用于创建CSV文件的例程。 一切都很好,除了我只获得列标题而没有行。

protected void CSVReport_Click(object sender, EventArgs e) { Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=PeopleReportTest.csv"); Response.Charset = ""; Response.ContentType = "text/csv"; Response.AddHeader("Pragma", "public"); GridView1.AllowSorting = false; GridView1.AllowPaging = false; GridView1.DataBind(); StringBuilder sb = new StringBuilder(); for (int k = 1; k < GridView1.Columns.Count; k++) { //add separator sb.Append(GridView1.Columns[k].HeaderText + ','); } //append new line sb.Append("\r\n"); for (int i = 0; i < GridView1.Rows.Count; i++) { for (int k = 1; k < GridView1.Columns.Count; k++) { //add separator sb.Append(GridView1.Rows[i].Cells[k].Text + ','); } //append new line sb.Append("\r\n"); } Response.Output.Write(sb.ToString()); Response.Flush(); Response.End(); } 

在检查时,我可以看到GridView1.Rows[i].Cells[k].Text总是返回一个空值。

所以问题可能在于我的gridview的结构。 我知道如果我有TemplateFields代码将不起作用,但我只有一个,它被设置为不可见。

所有其他字段都是DynamicFields 。 这可能是问题吗?

这是标记:

                     There are currently no items in this table.   

好的,我发现了问题所在。

我找不到其他类似的场景,所以我回答了我自己的问题,万一有人会发现它有用。

解决方案只是用标准的BoundFields和BOOM替换我所有的DynamicFields所有的数据。

下次我不会使用DynamicData框架,这是肯定的。