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);
1 行あたり 18 個のセルがあります。
助けてくれてありがとう。
CptSupermrkt のアドバイスを受けて、最初の "for" ループの直前にこのコードを実装しました。メソッドは例外をスローせずに続行しました。
DataColumn dc;
foreach (var item in gv.Columns)
{
dc = new DataColumn(item.ToString());
dt.Columns.Add(dc);
}