指定的参数已超出有效值的范围。 参数名: 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
------解决方案--------------------