DataGrid特殊行变色显示

在网上看了一下,基本上全是DataGridview的特殊行变色显示,由于项目有点儿老,里面用的都还是1.1版本里面的DataGrid数据绑定控件,所以就着手写了一下DataGrid特殊行的变色。

 

 

       //变色
        
//记录当前页的数据总条数
         int i = 0;
        DataBase.Bind_DG(
this.dgMsgList, strSql); 
        
//由于DataGrid只能通过Items.Count属性取出当前页的数据总条数,而不是像DataGridView.Rows.Count取出所有的数据总条数
         
//j是用来数据源取的数据,i是用来改变DataGrid行的颜色
         
//CurrentPageIndex下标索引是从0开始的乘以PageSize每页显示多少项,例如判断第三页数据每页显示20条(2*20)从第四十条数据开始判断
         
//小于总数据数,其实后来想想也可以写成j<dgMsgList.CurrentPageIndex * dgMsgList.PageSize+dgMsgList.PageSize 这样循环次数少多了
        for (int j = dgMsgList.CurrentPageIndex * dgMsgList.PageSize; j < ((DataTable)dgMsgList.DataSource).Rows.Count; j++)
        {
            
//核心讲完了下面就很简单了还原DataGrid的数据源到DataRowView
            DataRowView drv = ((DataTable)dgMsgList.DataSource).DefaultView[j];
            
//根据字段名取得数据
            double score = Convert.ToDouble(drv["oldcost"]);
            
double newscore = Convert.ToDouble(drv["成本"]);
            
//如果两个字段值不相等就显示成红色也就是特殊显示
              
//这里的i就是当前页的项数索引
            if (newscore != score && i < dgMsgList.PageSize)
            {
                
//条件成立后可以改变该行的字体颜色该行的背景色等等可以做一切想做的。
                
//dgMsgList.Items[i].BackColor = System.Drawing.Color.Red;
                dgMsgList.Items[i].ControlStyle.ForeColor = System.Drawing.Color.Red;
                dgMsgList.Items[i].ControlStyle.Font.Bold 
= true;
            }
            
            i
++;
        }
        DataCount 
= ((DataTable)dgMsgList.DataSource).Rows.Count;
       
//写完收工,任何程序一开始写不出来高性能的,都是慢慢修改来提高改善的,欢迎大家赐教。

 

posted @ 2009-07-16 16:37  . ℡歪歪﹖  阅读(2657)  评论(7编辑  收藏  举报