2015-04-06 21 views
0

这是我的代码转换gridview到CSV。 Gridview值不是自动生成的列,它从数据库中作为templatefield。Gridview单元格文本为空转换为CSV

try 
      { 
       DataTable dt1 = new DataTable(); 
       Response.ClearContent(); 
       Response.AddHeader("content-disposition", "attachment;filename=MyCsvFile.csv"); 
       Response.ContentType = "application/text"; 
       StringBuilder strBr = new StringBuilder(); 
       strBr.Append("\n"); 
       for (int j = 1; j < GridView1.Rows.Count; j++) 
       { 
        strBr.AppendLine(""); 
        for (int k = 0; k < GridView1.HeaderRow.Cells.Count; k++) 
        { 

         strBr.Append(GridView1.Rows[j].Cells[k].Text.Replace(",", "") + ","); 

        } 
        strBr.Append("\n"); 
       } 
       Response.Write(strBr.ToString()); 
       Response.Flush(); 
       Response.End(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      }   

这里GridView1.Rows [j] .Cells [k] .Text,这个“Text”包含null值。 请帮忙...

+0

请说明问题!发生异常?输出的格式不符合要求? – 2015-04-06 12:01:28

回答

0

您需要搜索单元内部的控件,因为列是TemplateField

GridView1.Rows[j].Cells[k].FindControl('ControlId').Text 
+0

谢谢克里斯蒂娜 – user 2015-04-07 04:11:53

+0

对不起..我在我的girdview中使用分页...但下面的代码不适用于分页。请帮助..同时收敛到CSV我在记事本中得到空值。 GridView1.AllowPaging = false; GridView1.DataBind(); – user 2015-04-07 04:30:16

+0

如果要导出所有值,则需要在创建CSV文件时直接从数据库中获取它们。以上代码仅导出网格中的当前页面。 – 2015-04-07 08:57:40