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

news2025/3/13 5:57:38

背景描述:存在多个轧辊,其中有的轧辊是成对的,成对的辊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.coloradmin.cn/o/2314114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

002-告别乱码-libiconv-C++开源库108杰

本课文包含三个视频&#xff01; 为什么中文版Windows是编程出现乱码的高发地带&#xff1f;怎么用 libiconv 把国标编码的汉字转换成宇宙统一码&#xff1f;怎么简化 libiconv 那些充满坑的 纯C 函数API&#xff1f; 1. 安装 libiconv 通常&#xff0c;你在 MSYS2 中安装过 G…

DeepSeek赋能智慧交通:城市交通流量智能预测与优化,开启智能出行新时代

在数字化转型的浪潮中&#xff0c;智慧交通正成为提升城市运行效率、改善居民出行体验的关键领域。 DeepSeek作为人工智能领域的前沿技术&#xff0c;凭借其强大的数据分析、智能决策和多模态交互能力&#xff0c;正在为智慧交通注入新的活力&#xff0c;推动交通管理从“经验…

Token登录授权、续期和主动终止的方案(Redis+Token(非jwtToken))

1、RedisToken方案的授权 1.1 基本原理 登录后使用UUID生成token&#xff0c;前端每次请求都会带上这个token作为授权凭证。这种方案是能自动续签&#xff0c;也能做到主动终止。所以很多项目用的都是RedisToken方案&#xff0c;简单方便问题少。缺点就是需要依赖Redis和数据…

强大的数据库DevOps工具:NineData 社区版

本文作者司马辽太杰&#xff0c; gzh&#xff1a;程序猿读历史 在业务快速变化与数据安全日益重要的今天&#xff0c;生产数据库变更管理、版本控制、数据使用是数据库领域的核心挑战之一。传统的解决方式往往采用邮件或即时通讯工具发起审批流程&#xff0c;再通过堡垒机直连数…

【动态规划篇】1137. 第 N 个泰波那契数

前言&#xff1a; 动态规划问题一般分为五步&#xff1a; 先确定一个状态表示根据状态表示来推导状态方程初始化填表顺序返回值 ①状态表示 先创建一个以为数组&#xff0c;起名为dp,这个一维数组就叫做dp表 把dp表填满&#xff0c;填满后的某个值就是我们想要的结果状态表…

网络信息安全专业(710207)网络安全攻防实训室建设方案

一、引言 随着信息技术的飞速发展&#xff0c;网络空间安全已成为国家安全的重要组成部分&#xff0c;对网络信息安全专业人才的需求日益增长。为满足网络信息安全专业&#xff08;专业代码710207&#xff09;的教学需求&#xff0c;提升学生在网络安全攻防领域的实践能力&…

【Linux】:线程池

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家带来线程池相关的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结构…

共享内存(System V)——进程通信

个人主页&#xff1a;敲上瘾-CSDN博客 进程通信&#xff1a; 匿名管道&#xff1a;进程池的制作&#xff08;linux进程间通信&#xff0c;匿名管道... ...&#xff09;-CSDN博客命名管道&#xff1a;命名管道——进程间通信-CSDN博客 目录 一、共享内存的原理 二、信道的建立 …

ctfhub-HTTP协议

请求方式 它要我们使用CTF**B Method,其实就是ctfhub方式 我们直接抓包试一试&#xff0c;把GET改成CTFHUB,在发送到repeater 在repeater处点击发送&#xff0c;得到响应 302跳转 点击“give me flag"没有任何变化&#xff0c;我们抓个包试试 我们把它发送到repeater&…

【TMS570LC4357】之工程创建

备注&#xff1a;具体资料请在官网海淘.TMS570LC4357资料 在线文档Hercules Safety MCU Resource Guide — Hercules Safety MCUs Documentation XDS100 Debug Probe (ti.com) Git https://git.ti.com/git/hercules_examples/hercules_examples.git https://git.ti.com/cgit/h…

一种改进的Estimation-of-Distribution差分进化算法

为了充分利用差分进化&#xff08;DE&#xff09;的强大开发和estimation-of-distribution算法&#xff08;EDA&#xff09;的强大探索&#xff0c;提出了一种混合estimation-of-distribution算法的改进差分进化IDE-EDA。首先&#xff0c;提出了一种新的协同进化框架&#xff0…

[数据结构]排序之希尔排序( 缩小增量排序 )

希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a; 先选定一个整数&#xff0c;把待排序文件中所有记录分成个 组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&#xff0c;取&#xff0c;重复上述分组和排序的工 作。当…

进程(下)【Linux操作系统】

文章目录 进程的状态R状态&#xff1a;S状态&#xff1a;D状态&#xff1a;T状态t状态Z状态&#xff1a;孤儿进程X状态&#xff1a; 进程的优先级如果我们要修改一个进程的优先级重置进程优先级 进程切换进程的调度 进程的状态 在内核中&#xff0c;进程状态的表示&#xff0c…

Insar结合ISCE2,某一个文件进行并行-stackSentinel.py

stackSentinel.py 依次执行 run_01 到 run_15&#xff0c;记录各自的日志 并行执行 run_16 里的所有命令&#xff0c;仍然记录日志 不知道对不对&#xff0c;测试的时间有点长就给停了 #!/bin/bash# ✅ 适用于 WSL/Linux runfiles_path"/mnt/e/insar_order_test/Stack…

2.2.3 TCP—UDP-QUIC

文章目录 2.2.3 TCP—UDP-QUIC1. TCP如何做到可靠性传输1. ACK机制2. 重传机制3. 序号机制4. 窗口机制5. 流量机制6. 带宽机制 2. tcp和udp如何选择1. tcp和udp格式对比2. ARQ协议&#xff08;Automatic Repeat reQuest&#xff0c;自动重传请求&#xff09;1. ARQ协议的主要类…

【Golang】第一弹-----初步认识GO语言

笔上得来终觉浅,绝知此事要躬行 &#x1f525; 个人主页&#xff1a;星云爱编程 &#x1f525; 所属专栏&#xff1a;Golang &#x1f337;追光的人&#xff0c;终会万丈光芒 &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 一、Go语言的简单介绍 1、G…

K8S学习之基础二十三:k8s的持久化存储之nfs

K8S持久化存储之nfs ​ 在 Kubernetes (k8s) 中使用 NFS&#xff08;Network File System&#xff09;作为存储解决方案是一种常见的方式&#xff0c;特别是在需要共享存储的场景中。以下是关于如何在 Kubernetes 中使用 NFS 存储的详细说明&#xff1a; 1. 准备 NFS 服务器 …

【Linux通信篇】深入理解进程间通信——管道

--------------------------------------------------------------------------------------------------------------------------------- 每日鸡汤&#xff1a;找一个对的人&#xff0c;然后好好去爱。一个你跟他在一起&#xff0c;然后又可以舒舒服服做自己的人。 -------…

Redis--Set类型

目录 一、引言 二、介绍 三、命令 1.sadd,smembers,sismember 2.spop&#xff0c;srandmember 3.smove&#xff0c;srem 4.sinter&#xff0c;sinterstore 5.sunion,sunionstore,sdiff,sdiffstore 四、内部编码 1.intset 2.hashtable 五、应用场景 1.使用Set保存用…

【0013】Python数据类型-列表类型详解

如果你觉得我的文章写的不错&#xff0c;请关注我哟&#xff0c;请点赞、评论&#xff0c;收藏此文章&#xff0c;谢谢&#xff01; 本文内容体系结构如下&#xff1a; Python列表&#xff0c;作为编程中的基础数据结构&#xff0c;扮演着至关重要的角色。它不仅能够存储一系…