日期:2014-05-19  浏览次数:20513 次

动态改变GridViewRow颜色。。GridView1_RowDataBound的问题
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 "等,我想让每行的颜色都根据颜色字段而变化。

请问,为什么第一种方法(就是注释的那段)完全没效果?
为什么第二种方法中第一行没效果?

谢谢

------解决方案--------------------
不需要用到 i ,在 for (int i = 0; i < GridView1.Rows.Count; i++) 中,i 只用在记数 gridview
------解决方案--------------------
这种情况没有必要放在RowDataBound事件下处理,直接在数据绑定完后遍历所有行就行了
------解决方案--------------------
同意楼上的说法
------解决方案--------------------
GridViewRow 是个数据行,相当于DataRow

e.Row 是GridView在表现时的行。所以第一个是没有效果的
------解决方案--------------------
在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绑定后写 更好 更有效率