我有我想轉換成一個DataTable一個GridView。我無法將GridView的DataSource用於此DataTable。我發現下面的方法是最常見的方式使用最多來解決這個任務,但由於某些原因,下面的方法不斷拋出的「找不到列0」的IndexOutOfRangeException。下面的代碼:爲什麼這個方法找不到這個GridViewDataRow的列?
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」循環實現了這個代碼,且該方法繼續W/O拋出異常:
DataColumn dc;
foreach (var item in gv.Columns)
{
dc = new DataColumn(item.ToString());
dt.Columns.Add(dc);
}
如果顯示GridView控件 –
ASPX代碼當你說DR = dt.NewRow(),你已經宣佈DT作爲一個DataTable以上,但不列這將是有益的。所以,當你說dr = dt.NewRow(),然後dr [0]時,沒有列0.至少這是我的第一印象。您可以通過像DataColumn col1 = new DataColumn(「Column 1」); dt.Columns.Add(COL1); – CptSupermrkt