我試圖通過gridview循環並一次保存所有項目。不過,我有一個問題,從下拉列表和文本框中獲取值。ASP.Net獲取值ArgumentOutOfRangeException拋出拋出
ArgumentOutOfRangeException was caught. Specified argument was out of the range of valid values.
下面是我使用的代碼:每次我得到這個錯誤
foreach (GridViewRow gvr in gvInvalidOrgs.Rows)
{
try
{
org_code = Convert.ToInt32(gvr.Cells[0].Text);
division = ((DropDownList)gvr.Cells[1].Controls[0]).SelectedValue;
org_description = (((TextBox)gvr.Cells[2].Controls[0]).Text);
}
...
}
兩個文本框和dropdownlists是在rowbound動態創建的,如果該事項。
TIA
你會更好地使用GridViewRow.FindControl()服務,並通過名稱查找控件,而不是通過索引使用Controls [index]來引用它您可能需要將列轉換爲TemplateColumns才能使其工作,但它是在我的經驗中更容易,更不容易出錯。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridviewrow.findcontrol.aspx也見http://stackoverflow.com/questions/1965835/find-control-inside-grid -row – David
不要在'RowDataBound'中創建它們,而要在'RowCreated'中創建它們。只有當GridView是數據綁定時纔會調用前者。後者在每一次回傳中都會被調用。 –