我有一个试图转换为 DataTable 的 GridView。我不能为此 DataTable 使用 GridView 的 DataSource。我发现下面的方法是最常用的解决此任务的方法,但由于某种原因,下面的方法不断抛出“找不到第 0 列”的 IndexOutOfRangeException。这是代码:
DataSet ds = new DataSet("Student"); DataTable dt = new DataTable(String.Format("{0}For{1}", gv.ID.Substring(2, gv.ID.Length - 2), year)); for (int j = 0; j < gv.Rows.Count; j++) { DataRow dr; GridViewRow row = gv.Rows[j]; dr = dt.NewRow(); for (int i = 0; i < row.Cells.Count; i++) { dr[i] = row.Cells[i].Text; //***EXCEPTION IS THROWN HERE*** } dt.Rows.Add(dr); } ds.Tables.Add(dt);
每行有 18 个单元格。
提前感谢您的帮助。
解决方案 我接受了 CptSupermrkt 的建议,并在第一个“for”循环之前实现了这段代码,并且该方法继续运行,没有抛出异常:
DataColumn dc;
foreach (var item in gv.Columns)
{
dc = new DataColumn(item.ToString());
dt.Columns.Add(dc);
}