gpt4 book ai didi

c# - GridView 从抛出异常背后的代码更新

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:01 26 4
gpt4 key购买 nike

我有一个 GridView,其中包含一个客户端列表及其绑定(bind)到 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: Specified argument was out of the range of valid values. Parameter name: index]
System.Web.UI.ControlCollection.get_Item(Int32 index) +8673806

指向代码中的这一行:

cliIdStr = ((TextBox)(row.Cells[1].Controls[0])).Text;

如果我正确理解消息,问题出在 Controls[0],但为什么呢?我如何访问 gridView 单元格中的数据以发送到更新?

最佳答案

您的代码失败是因为当更新发生时,提供编辑 UI 的行不再可用 - e.RowIndex 处的行是一个普通的 GridView 行,其单元格将根据列类型进行控制。因此,大多数单元格(例如 BoundField 列的单元格)内部没有任何控件,因为单元格直接包含值 - 因此 Controls[0] 处出现错误。

您需要使用 GridViewUpdateEventArgs.NewValues属性以获取行(非键列)的新值。同样,键列的值将出现在 e.Keys 中。 .

编辑:我还建议您考虑使用 ObjectDataSource 而不是 SqlDataSource 让您的生活更简单 - 参见 this article让你开始。

关于c# - GridView 从抛出异常背后的代码更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com