关于对GridView进行编辑行为,提交后出现超出索引范围的问题。
索引超出范围。必须为非负值并小于集合大小。参数名:index还是这个问题。我前台的DataKeyNames="编号"也加了,DataBind()也加了,主键也设置了。就是...
索引超出范围。必须为非负值并小于集合大小。
参数名: index
还是这个问题。我前台的 DataKeyNames="编号" 也加了,DataBind()也加了,主键也设置了。就是不知道为什么还出这问题。
string sqlstr = "update [Chuzhang] set 出账类型='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',时间='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',费用类型='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',银行='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "',收款人='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + "',金额='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() + "',备注='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim() + "'where 编号='" + gvInfo.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
gvInfo.EditIndex = -1;
BindsData();
点编辑的时候GridView第二列到第八列可以修改。第一列编号是键值。哪里错了啊。搞了一下午了。 展开
参数名: index
还是这个问题。我前台的 DataKeyNames="编号" 也加了,DataBind()也加了,主键也设置了。就是不知道为什么还出这问题。
string sqlstr = "update [Chuzhang] set 出账类型='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',时间='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "',费用类型='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[3].Controls[0])).Text.ToString().Trim() + "',银行='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[4].Controls[0])).Text.ToString().Trim() + "',收款人='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[5].Controls[0])).Text.ToString().Trim() + "',金额='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[6].Controls[0])).Text.ToString().Trim() + "',备注='"
+ ((TextBox)(gvInfo.Rows[e.RowIndex].Cells[7].Controls[0])).Text.ToString().Trim() + "'where 编号='" + gvInfo.DataKeys[e.RowIndex].Value.ToString() + "'";
sqlcom = new SqlCommand(sqlstr, sqlcon);
sqlcon.Open();
sqlcom.ExecuteNonQuery();
sqlcon.Close();
gvInfo.EditIndex = -1;
BindsData();
点编辑的时候GridView第二列到第八列可以修改。第一列编号是键值。哪里错了啊。搞了一下午了。 展开
3个回答
展开全部
如果正确设置过了DataKeyNames属性,按理 gvInfo.DataKeys[e.RowIndex].Value.ToString() 是不会出错了
实际开发中根本看不到gvInfo.Rows[e.RowIndex].Cells[1].Controls[0]这样的代码,都是前台使用TemplateField,后台用FindControl去找控件,否则很难找到错误所在;而且很少会使用拼接sql语句
有时候一个单元格多了一个空格,就需要用Cells[index].Controls[1]来找到控件,这谁能知道?建议楼主使用模板列,已避免这种困扰
实际开发中根本看不到gvInfo.Rows[e.RowIndex].Cells[1].Controls[0]这样的代码,都是前台使用TemplateField,后台用FindControl去找控件,否则很难找到错误所在;而且很少会使用拼接sql语句
有时候一个单元格多了一个空格,就需要用Cells[index].Controls[1]来找到控件,这谁能知道?建议楼主使用模板列,已避免这种困扰
追问
那模板列来实现GridView的编辑的话,该怎么做呢?我目前只会做GridView自带的编辑方式,还出现了这个错误。
追答
方便留Q号远程
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询