我收到错误(索引超出范围。必须是非负数且小于集合的大小。 GridView_RowUpdating事件中的参数名称:index)。我尝试了一些贴在这里的想法,但仍然遇到了这个错误。
背后的代码
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label stu_name= ((Label)GridView1.Rows[e.RowIndex].FindControl("student_Name"));
}
答案 0 :(得分:0)
虽然编码人员的偏见是让代码产生所需的结果,但如果发生异常则意味着它可以再次出现。
很好地弄清楚所有的数据绑定和查看黑暗魔法,但从一开始就可能在假设中保守一点也是个好主意:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
var grid = sender as Grid;
if (grid == null) return;
var rowIndex = e.RowIndex;
var rows = grid.Rows;
if (rowIndex < 0 || rowIndex > rows.Count - 1) return;
Label stu_name= ((Label) rows[rowIndex].FindControl("student_Name"));
}
答案 1 :(得分:0)
检查是否为GridView1启用了ViewState。
如果禁用ViewState,ASP.NET将无法正确更新,因为ASP.NET可以处理更新或其他任何事件,以保留以前的数据。
如果ViewState == false,GridView1.Rows[e.RowIndex]
将失败,因为GridView1.Rows.Count将为0。
此外,如果你在Page_Load中进行DataBind,那么只要确保你是DataBind!IsPostBack。
if(!IsPostBack)
// DataBind Grid ..