日期:2014-05-18  浏览次数:21188 次

GridView1_RowDataBound事件,索引超出范围。很奇怪的问题,我明明做了判断的。
C# code
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
           //取主键的时候前面要加个判断,因为开始的时候是bof,不是从0开始的.

           //string aa = GridView1.DataKeys[e.Row.RowIndex].Value.ToString();

            e.Row.Attributes.Add("onmouseover", "c=this.style.backgroundColor;this.style.backgroundColor='#9CCBF7';this.style.cursor='hand'");
            e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c");

            //注意格式,是单引号加双引号,否则会提示“常量中有换行符”
            //这地方注意传递主键的时候的方式
            e.Row.Attributes.Add("ondblclick", "returnSelect('" + GridView1.DataKeys[e.Row.RowIndex].Value.ToString() + "','" + e.Row.Cells[1].Text.ToString() + "','" + e.Row.Cells[2].Text.ToString() + "','" + e.Row.Cells[3].Text.ToString() + "','" + e.Row.Cells[4].Text.ToString() + "','" + e.Row.Cells[5].Text.ToString() + "','" + e.Row.Cells[6].Text.ToString() + "');");
        }

    }


很奇怪的问题,我命名做了判断的。 我测试了一下,gridview里面有数据的时候不会报错,没有数据的时候就会报错。



------解决方案--------------------
没有数据的时候根本执行绑定事件,应该不是跟数据有关系的,

你的GridView1是否设置了DataKeyNames属性

------解决方案--------------------
我这两天遇到几次你这样的问题,就是在判断中加了一个条件象这样就不会错了:
if (GridView1.Columns.count > 7)
if (e.Row.RowType == DataControlRowType.DataRow)

这里是假设你的GridView1有7列

------解决方案--------------------
你肯定是搞错了
数据源没有数据的时候,根本就不会执行
GridView1_RowDataBound
事件的