GRIDVIEW的 INDEX问题,疑惑中

kejiasheng 2011-01-07 11:24:05
表结构为:物资代码(主键),序号,物资名称型号(主键),规格(主键)
代码+序号可以确定行的唯一性,代码+型号+规格也可以确定行的唯一性
GIRDVIEW DATAKEYS设定为:物资代码,物资序号

在GRIDVIEW进行数据更新时,报错:
"指定的参数已超出有效值的范围。参数名: index"
应该是未取得Index值的问题,却不知道错在哪儿。请各位指点迷津。
更新代码如下:

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{

//UltraGridRow oldrow = (UltraGridRow)e.Data;
if (e.RowIndex > -1)
{

string sqlupdate = "update XTXHGG SET 物资代码='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() +"',物资规格='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() +"' WHERE 物资代码='" + GridView1.DataKeys[e.RowIndex]["物资代码"].ToString() + "' and 序号='" + GridView1.DataKeys[e.RowIndex]["型规序号"].ToString() + "'";
SqlCommand sqlcom = new SqlCommand(sqlupdate, conn);
conn.Open();
sqlcom.ExecuteNonQuery();
conn.Close();
GridView1.EditIndex = -1;
BindList();
}

}
...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kejiasheng 2011-01-19
  • 打赏
  • 举报
回复
没什么分,帮忙的每人给10分吧,谢谢啦
kejiasheng 2011-01-19
  • 打赏
  • 举报
回复
感谢楼上的兄弟,确实是存在空值的。
kejiasheng 2011-01-07
  • 打赏
  • 举报
回复
谢谢q107770540支持
但是WHERE语句是没有问题的,同样的写法,同样的条件在DELETE中没有任何问题。
改成0、1确实是简化了语句。
但是问题应该是在e.RowIndex 未取得索引吧
  • 打赏
  • 举报
回复
GridView1.Rows[e.RowIndex].Cells[0].Text

GridView1.SelectedRow.Cells[0].Text
q107770540 2011-01-07
  • 打赏
  • 举报
回复
try:

GridView1.DataKeys[e.RowIndex][0]
GridView1.DataKeys[e.RowIndex][1]
lilianjie0426 2011-01-07
  • 打赏
  • 举报
回复
监视一下看看GridView1.Rows[e.RowIndex]和GridView1.Rows[e.RowIndex].Cells[3].Controls[0]等这些东西都有吗?正常吗?我怀疑有为null的。。。
Nihn 2011-01-07
  • 打赏
  • 举报
回复
打断点监视一下。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧