DataGrid特殊行变色显示

本文介绍了一种针对DataGrid控件中特定行进行颜色变化的方法。通过比较两列数据的值来决定是否改变行的颜色,实现了数据差异的视觉突出显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上看了一下,基本上全是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;
       
//写完收工,任何程序一开始写不出来高性能的,都是慢慢修改来提高改善的,欢迎大家赐教。

 

转载于:https://www.cnblogs.com/NickOne/archive/2009/07/16/1524989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值