C# 索引超出范围。必须为非负数且小于集合的大小。
我收到错误(索引超出范围。必须为非负且小于集合的大小)。 GridView\u行更新事件中的参数名称(索引)。我尝试了一些张贴在这里的想法,但仍然得到这个错误 代码隐藏C# 索引超出范围。必须为非负数且小于集合的大小。,c#,asp.net,C#,Asp.net,我收到错误(索引超出范围。必须为非负且小于集合的大小)。 GridView\u行更新事件中的参数名称(索引)。我尝试了一些张贴在这里的想法,但仍然得到这个错误 代码隐藏 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { Label stu_name= ((Label)GridView1.Rows[e.RowIndex].FindControl("student_Name"));
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
Label stu_name= ((Label)GridView1.Rows[e.RowIndex].FindControl("student_Name"));
}
虽然编码器的偏见是让代码产生期望的结果,但如果发生异常,则意味着它可能再次发生 很好地理解了所有数据绑定和viewstate暗魔法,但从一开始就在假设方面稍微保守一点可能也是个好主意:
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"));
}
受保护的无效GridView1\u行更新(对象发送方,GridViewUpdateEventArgs e)
{
var grid=发送方作为网格;
if(grid==null)返回;
var rowIndex=e.rowIndex;
var rows=grid.rows;
if(rowIndex<0 | | rowIndex>rows.Count-1)返回;
Label stu_name=((Label)行[rowIndex].FindControl(“学生名”);
}
虽然编码人员的偏见是让代码产生所需的结果,但如果出现异常,则意味着它可能再次发生
很好地理解了所有数据绑定和viewstate暗魔法,但从一开始就在假设方面稍微保守一点可能也是个好主意:
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"));
}
受保护的无效GridView1\u行更新(对象发送方,GridViewUpdateEventArgs e)
{
var grid=发送方作为网格;
if(grid==null)返回;
var rowIndex=e.rowIndex;
var rows=grid.rows;
if(rowIndex<0 | | rowIndex>rows.Count-1)返回;
Label stu_name=((Label)行[rowIndex].FindControl(“学生名”);
}
检查是否为GridView1启用了ViewState
如果禁用ViewState,ASP.NET将无法正确更新,因为ASP.NET要处理更新或任何其他事件,还需要保留以前的数据
在这种情况下,ViewState==false,GridView1.Rows[e.RowIndex]
,将失败,因为GridView1.Rows.Count将为0
另外,如果您在页面加载中进行数据绑定,那么请确保仅在以下情况下进行数据绑定!我回来了
if(!IsPostBack)
// DataBind Grid ..
检查是否为GridView1启用了ViewState 如果禁用ViewState,ASP.NET将无法正确更新,因为ASP.NET要处理更新或任何其他事件,还需要保留以前的数据 在这种情况下,ViewState==false,
GridView1.Rows[e.RowIndex]
,将失败,因为GridView1.Rows.Count将为0
另外,如果您在页面加载中进行数据绑定,那么请确保仅在以下情况下进行数据绑定!我回来了
if(!IsPostBack)
// DataBind Grid ..
尝试调试。可能是
-1
,当未选择任何行时。它正确显示行索引(e.rowindex)在调试“GridView1.Rows.Count”和“e.rowindex”时添加监视,并共享两个表达式的结果以调查问题。ohhh。。它显示GridView1.Rows.Count为0,e.RowIndex为1(选定的行索引)。是否为GridView1控件启用了ViewState?否则,ASP.NET将无法在GridView上正常运行更新。请尝试调试。可能是-1
,当未选择任何行时。它正确显示行索引(e.rowindex)在调试“GridView1.Rows.Count”和“e.rowindex”时添加监视,并共享两个表达式的结果以调查问题。ohhh。。它显示GridView1.Rows.Count为0,e.RowIndex为1(选定的行索引)。是否为GridView1控件启用了ViewState?如果没有,ASP.NET将无法在GridView上正常运行更新。刚才我注意到,Rowediting事件触发两次,第一次显示网格。但第二次显示EmptyDataTemplate文本OK。确保每次回发时不绑定数据。检查一下!我刚才注意到,行编辑事件触发了两次,第一次显示网格,但第二次显示EmptyDataTemplate文本OK。确保每次回发时不绑定数据。检查一下!在数据绑定之前返回IsPostBack。