protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        /*foreach (GridViewRow gvr in GridView1.Rows)
        {
            gvr.BackColor = System.Drawing.Color.FromName(e.Row.Cells[2].Text.ToString());
            ;
        }*/  //这段注释的完全没效果
        for (int i = 0; i < GridView1.Rows.Count; i++)
        {
            e.Row.BackColor=System.Drawing.Color.FromName(e.Row.Cells[2].Text.ToString());
        }  // 这个可以用,但是第1行没效果。。其他行都可以
    }数据表的第3个字段为颜色名,比如"Yellow"等,我想让每行的颜色都根据颜色字段而变化。请问,为什么第一种方法(就是注释的那段)完全没效果?
为什么第二种方法中第一行没效果?谢谢

解决方案 »

  1.   

    还有一个问题就是第2种方法用for循环,但是循环体中竟然没用到循环变量i...好奇怪,为什么?
      

  2.   

    不需要用到  i  ,在 for (int i = 0; i < GridView1.Rows.Count; i++) 中,i 只用在记数 gridview
      

  3.   

    1的行数,在 for 语句中会在 i++ 中自增
      

  4.   

    这种情况没有必要放在RowDataBound事件下处理,直接在数据绑定完后遍历所有行就行了
      

  5.   

    GridViewRow 是个数据行,相当于DataRow e.Row 是GridView在表现时的行。所以第一个是没有效果的
      

  6.   

    那为什么用for时也用的是e.Row但是有效果
      

  7.   

    在databound 写 
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            /*foreach (GridViewRow gvr in GridView1.Rows)
            {
                gvr.BackColor = System.Drawing.Color.FromName(e.Row.Cells[2].Text.ToString());
                ;
            }*/  //这段注释的完全没效果
     RowDataBound在一行结束后触发 ,它怎么知道有多少个GridView1.Rows
    我觉得代码有问题 ,在整个GEIDVIEW绑定后写 更好 更有效率