为什么索引超出范围异常?

时间:2016-03-16 06:13:56

标签: c# asp.net c#-4.0 gridview webforms

我使用此代码在gridview中获取last row的索引,然后在特定单元格中放入空字符串,但抛出错误:Index out of range

protected void grdViewAdvances_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow) 
    {
        int RowIndex = grdViewAdvances.Rows.Count-1 ;

        grdViewAdvances.Rows[RowIndex].Cells[5].Text = "";
    }

1 个答案:

答案 0 :(得分:1)

每行RowDataBound事件的行数都会发生变化。如果要更改最后一行的文本列,则让绑定进程完成并在RowDataBound之后分配空字符串。

您可能需要在DataBind()方法之后执行。

grdViewAdvances.DataSource = dt;
grdViewAdvances.DataBind();
grdViewAdvances.Rows[RowIndex].Cells[5].Text = "";

修改

我刚刚调试了代码,当第一次在if语句下执行代码时,Row Count为零并从中减去一行将得到r​​ow = -1,这肯定是超出绑定索引。