我有一個GridView的客戶端列表和他們的細節綁定到一個Sq1DataSource。我想通過RowUpdating事件從代碼中更新它,通過訪問數據逐個單元格並將其發送到我的客戶端BLL中的更新功能。這是代碼:GridView從拋出異常的代碼更新
protected void gvClients_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = gvClients.Rows[e.RowIndex];
//accesses Client Id
cliIdStr = ((TextBox)(row.Cells[1].Controls[0])).Text;
int cliId = int.Parse(cliIdStr);
cliBll = new ClientBLL(conStrName);
//Accesses client object from DB according to Client Id accessed from gridView
client = cliBll.GetClient(cliId);
if (client != null)
{
client.ClientName = ((TextBox)(row.Cells[2].Controls[0])).Text;
client.Phone = ((TextBox)(row.Cells[3].Controls[0])).Text;
client.EMail = ((TextBox)(row.Cells[4].Controls[0])).Text;
client.Fax = ((TextBox)(row.Cells[5].Controls[0])).Text;
client.Address = ((TextBox)(row.Cells[6].Controls[0])).Text;
client.City = ((DropDownList)(row.Cells[7].Controls[0])).SelectedValue;
client.ZipCode = ((TextBox)(row.Cells[8].Controls[0])).Text;
client.IdNum = ((TextBox)(row.Cells[9].Controls[0])).Text;
client.BusField = ((TextBox)(row.Cells[10].Controls[0])).Text;
cliBll = new ClientBLL(conStrName);
cliBll.UpdateClient(cliDtlShrt);
}
}
當我運行該程序,並按下GridView控件一切的編輯按鈕是好的,但是當我按下Uodate按鈕下面的異常被拋出:
[ArgumentOutOfRangeException:指定的參數超出了有效值的範圍 。參數名稱:索引]
System.Web.UI.ControlCollection.get_Item(的Int32索引)8673806
指向這一行中的代碼:
cliIdStr = ((TextBox)(row.Cells[1].Controls[0])).Text;
如果我正確的理解消息問題出在Controls [0]中,但爲什麼?如何從gridView單元訪問數據以發送到更新?
您確定單元格中有實際的TextBox控件嗎?你自己把它放在那裏嗎? –