У меня есть GridView со списком клиентов и их данными, привязанными к Sq1DataSource.Я хочу обновить его из кода, лежащего в основе события RowUpdating, путем доступа к ячейке данных по ячейке и отправки ее в функцию обновления в моем клиентском BLL.Это код:
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 index) + 8673806
, указывающий на эту строку в коде:
cliIdStr = ((TextBox)(row.Cells[1].Controls[0])).Text;
ЕслиЯ правильно понимаю сообщение, проблема в элементах управления [0], но почему?Как получить доступ к данным из ячеек gridView для отправки в Updating?