删除前几个没事删除后几个就出错
索引超出范围。必须为非负值并小于集合大小。
参数名: index
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
源错误:
行 26: protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
行 27: {
行 28: Label ID = GridView1.Rows[e.RowIndex].Cells[1].FindControl("Label1") as Label;//报错行
行 29: string SqlTxt = "DELETE FROM ClassList WHERE ClassID='" + ID.Text + "'";
行 30: iDal.GetSqlCmd(SqlTxt);
大小。
------解决方案--------------------------------------------------------
建议你的id不要这样弄,gridview里面有将数据库表的主键字段和gridview的datakeynames属性绑定
这样你在删除的时候就可以使用GridView1.DataKeys[row.RowIndex].Value.ToString();
并且删除完后请你重新绑定到新的数据源!
------解决方案--------------------------------------------------------
我以前也报过同样的错误 但忘记怎么解决的去了 复习一下
------解决方案--------------------------------------------------------
gridview的datakeynames属性与主建绑定,
GridView1.DataKeys[row.RowIndex].Value.ToString();
别忘记调用databind()
------解决方案--------------------------------------------------------
Label name = ((Label )(this.GridView1.Rows[e.RowIndex].Cells[1].FindControl("Label1") )).Text.ToString();
如果是主键直接
this.GridView1.DataKeys[e.RowIndex][0].ToString();