在GridView中使用自动生成的列提取列数和标题文本

我正在重写我们团队的主库中的一个函数,其中一个function是将Gridview导出到Excel电子表格。 我已经有一个函数将DataSet导出到Excel,所以我需要做的就是将一个GridView转换为一个DataSet。 没问题吧? 一切都很好,直到我发现GridView对象的列收集是空的,并且使用自动生成的列时,标题文本为空。

我知道MS曾经说过,你放弃了gridview渲染数据的方式,但是我找不到任何能显示我如何捕获列集合的东西。 我希望这个图书馆尽可能灵活。

这是我的function,因为它现在…

public static MemoryStream GridViewToXLSX(GridView Gridview, Options options = null) { DataSet ds = new DataSet(); DataTable dt = new DataTable(); for (int i = 0; i < Gridview.Columns.Count; i++) { dt.Columns.Add(Gridview.Columns[i].HeaderText); } foreach (GridViewRow row in Gridview.Rows) { DataRow dr = dt.NewRow(); for (int j = 0; j < Gridview.Columns.Count; j++) { dr[Gridview.Columns[j].HeaderText] = row.Cells[j].Text; } dt.Rows.Add(dr); } ds.Tables.Add(dt); return DataSetToXLSX(ds, options); } 

或者,您可以尝试此示例代码而不是Column.count,您可以计算GridView的HeaderRow中的单元格数量。

这只是一个示例,而不是实际的代码

 GridViewRow headerRow = gv.HeaderRow; int count = headerRow.Cells.Count