日期:2014-05-18  浏览次数:20924 次

指定的参数已超出有效值的范围。 参数名: index
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
  {
  oleconn = new OleDbConnection(strlj);
string strup = "update subject set subject='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString() + "' where id=" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "";
  olecom = new OleDbCommand(strup, oleconn);
  oleconn.Open();
  olecom.ExecuteNonQuery();
  oleconn.Close();
  GridView1.EditIndex = -1;
  Bind();
  }
这是部分代码,这句出的问题,大侠们帮帮忙啊

------解决方案--------------------
((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString()





GridView1.DataKeys[e.RowIndex].Value.ToString() 


这两个取不到值
------解决方案--------------------
Controls[0]应该不会有问题

Rows[e.RowIndex]

Cells[1]

就这两个地方用到index了,调式一下看看那里不对了

------解决方案--------------------
还有这个GridView1.DataKeys[e.RowIndex]

你调试一下不就知道了,大家也不知道你GridView1里面是什么
------解决方案--------------------
哎,自己单步调试吗,然后看看GirdView里面的具体情况,看看你要找的textbox 在那一列就晓得了。
出了问题,你自己debug的?
------解决方案--------------------
你也真够懒得,不要讲太多代码混在一起,除了错都不知道是哪里

//先用FindControl()方法找到你要取值的控件

TextBox txt=GridView1.Rows[e.RowIndex].FindControl("文本框的ID") as TextBox;

string name=txt.Text;//这里取值

这样分开写,你调试的时候就知道具体在哪个点除了问题了
------解决方案--------------------
是不是你传到数据库的参数不对应?
譬如说你数据库设定的是int型,页面传过去的不是int
------解决方案--------------------
探讨

你也真够懒得,不要讲太多代码混在一起,除了错都不知道是哪里

//先用FindControl()方法找到你要取值的控件

TextBox txt=GridView1.Rows[e.RowIndex].FindControl("文本框的ID") as TextBox;

string name=txt.Text;//这里取值

这样分开写,你调试的时候就知道具体在哪个点除了问题了
……