当前位置: 首页 > article >正文

wpf中DataGrid组件每一行的背景色动态变化

背景描述:存在多个轧辊,其中有的轧辊是成对的,成对的辊ROLL_NO这个变量的值相同,有的轧辊是单个暂时没有配对的。成对的辊北京颜色交替突出显示,单个辊不需要设置背景色。

实现: 换辊的时候给成对的辊分配相同的ROLL_NO,且ROLL_NO是表中最大的ROLL_NO+1。

int maxRollNo = DBHandle.GetRollNo();

if ((OnlineRollData[0].ROLL_NO != 0 && OnlineRollData[3].ROLL_NO != 0 && OnlineRollData[0].ROLL_NO != OnlineRollData[3].ROLL_NO) ||
    OnlineRollData[0].ROLL_NO == 0 || OnlineRollData[3].ROLL_NO == 0)
{
    int no = ++maxRollNo;
    DBHandle.RollPairing(no, OnlineRollData[0].ROLL_ID);
    DBHandle.RollPairing(no, OnlineRollData[3].ROLL_ID);
}

if ((OnlineRollData[1].ROLL_NO != 0 && OnlineRollData[2].ROLL_NO != 0 && OnlineRollData[1].ROLL_NO != OnlineRollData[2].ROLL_NO) ||
    OnlineRollData[1].ROLL_NO == 0 || OnlineRollData[2].ROLL_NO == 0)
{
    int no = ++maxRollNo;
    DBHandle.RollPairing(no, OnlineRollData[1].ROLL_ID);
    DBHandle.RollPairing(no, OnlineRollData[2].ROLL_ID);
}

if ((OnlineRollData[4].ROLL_NO != 0 && OnlineRollData[5].ROLL_NO != 0 && OnlineRollData[4].ROLL_NO != OnlineRollData[5].ROLL_NO) ||
    OnlineRollData[4].ROLL_NO == 0 || OnlineRollData[5].ROLL_NO == 0)
{
    int no = ++maxRollNo;
    DBHandle.RollPairing(no, OnlineRollData[4].ROLL_ID);
    DBHandle.RollPairing(no, OnlineRollData[5].ROLL_ID);
}

 

 public static int GetRollNo()
 {
     int rollNo = 0;
     try
     {
         OracleDataReader readData;
         string cmdstr = "SELECT MAX(ROLL_NO) from ROLLDATA";

         readData = Utilities.GetDataReader(cmdstr);

         while (readData.Read())
         {
             if (readData.GetValue(0) != DBNull.Value && readData.GetValue(0) != "")
                 rollNo = Convert.ToInt32(readData.GetValue(0));
         }
         readData.Close();
         readData.Dispose();
     }
     catch (Exception ex)
     {
         MessageBox.Show("GetRollNo error" + ex.Message);
         LoggingDriver.info("GetRollNo error is {0}", ex.Message);
     }
     return rollNo;
 }

 每组辊获取相同的ROLL_NO后,给DataGrid设置行样式,其中背景色使用转换器

using NPOI.Util;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using System.Windows.Media;

namespace SBCSML2Client.Command
{
    public class PairIdToBrushConverter : IValueConverter
    {
        private static readonly Dictionary<int, string> _cache = new Dictionary<int, string>();
        int lastId = -1;
        string lastColor = "";
        int count = 0;
        private static readonly string[] _palette =
        {
            "#FFFFF0",//淡黄色
            "#F5FFFA"//淡蓝色
    };

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {   
            if (value is int id)
            {   
                if (!_cache.TryGetValue(id, out var brush))
                {
                    if (id != 0)
                    {            
                        if (id != lastId)
                        {
                            count++;
                            brush = _palette[count % 2];
                            lastId = id;
                            lastColor = brush;
                        }
                        else
                        {
                            brush = lastColor;
                        }
                    }
                }
                return brush;
            }
            return Brushes.Transparent;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            => throw new NotImplementedException();
    }
}

页面中添加 转换器 的资源

 


http://www.kler.cn/a/583222.html

相关文章:

  • 纯前端全文检索的两种实现方案:ElasticLunr.js 和 libsearch
  • 网络通信Socket中多态HandleIO设计模式深度解析
  • 打造Windows服务器安全堡垒:安当SLA双因素认证方案详解
  • Docker 入门与实战指南
  • PostgreSQL与Oracle数据库相比有什么优势
  • sql靶场--布尔盲注(第八关)保姆级教程
  • Flash Attention 算法简介
  • openai-cua-sample-app - 使用计算机的 Agent示例应用
  • 【C语言系列】字符函数和字符串函数
  • golang算法二分查找
  • Qt开源控件库(qt-material-widgets)的编译及使用
  • 【原创】springboot+vue音乐教育培训管理系统设计与实现
  • 2.angular指令
  • AI驱动的数字供应链安全情报预警服务:云脉XSBOM
  • Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))
  • 点云深度学习系列:PVRCNN——point-voxel融合的分割模型
  • 攻防世界web:NewsCenter(含sqlmap基本参数讲解)
  • 引入其他 YML 配置源 —— Spring Boot 中的 `import` 功能
  • Axios简单说明,快速上手
  • 3.12-2 html