采购订单打开单据时表格行设置颜色

news2024/9/9 4:03:49

文章目录

  • 采购订单打开单据时表格行根据条件显示背景色
    • Python实现
    • 插件实现
      • 创建项目
      • 创建类,实现接口
      • 重写方法
      • 编译后挂载插件到表单插件
      • 启动开发环境进行测试
        • 单元格设置背景色
        • 行背景色

采购订单打开单据时表格行根据条件显示背景色

Python实现

import clr 
clr.AddReference('System')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('System.Drawing')
clr.AddReference('System.Collections')

from System import *
from System.Collections import *
from System.Collections.Generic import *
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Metadata import FormatCondition
from System.Drawing import *

def OnFormatRowConditions(args):
  if(args.DataRow.ColumnContains('F_Krystal_PriceStatus') and args.DataRow['F_Krystal_PriceStatus'] is not None):
    if(args.DataRow['F_Krystal_PriceStatus']!='B'):
      fc = FormatCondition()
      fc.ApplayRow = True
      fc.BackColor = "#FF0000"
      args.FormatConditions.Add(fc)

插件实现

创建项目

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

创建类,实现接口

在这里插入图片描述

重写方法

完整代码

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel;
using Kingdee.BOS.JSON;
using Kingdee.BOS.Util;
using System;
using System.Collections.Generic;
using System.ComponentModel;


namespace Krystal.K3.SCM.Business.PlugIn.PUR
{
    /// <summary>
    /// 功能描述    :PurchaseOrderEdit  
    /// 创 建 者    :Administrator
    /// 创建日期    :2024/7/11 10:01:51 
    /// 最后修改者  :Krystal
    /// 最后修改日期:2024/7/11 10:01:51 
    /// </summary>
    [Description("采购订单-表单插件")]
    [HotUpdate]
    public class PurchaseOrderEdit: AbstractBillPlugIn
    {
        #region <常量>
        #endregion <常量>

        #region <变量>
        #endregion <变量>

        #region <属性>
        #endregion <属性>

        #region <构造方法和析构方法>
        #endregion <构造方法和析构方法>

        #region <方法>
        #endregion <方法>

        #region <事件>
        public override void AfterBindData(EventArgs e)
        {
            base.AfterBindData(e);
            var entityKey = "FPOOrderEntry";

            var backColor = "#FF0000";

            var backColor0 =  "#cfe2f3";

            var backColor1 = "#ead1dc";
          


            var rowCount = this.View.Model.GetEntryRowCount(entityKey);


            // 常规操作是直接使用grid.SetRowBackcolor函数,已过时,目前只有客户端生效

            #region 设置某一行整行背景色 客户端生效 已过时 
            //var grid = this.View.GetControl<EntryGrid>(entityKey);


            价格状态不等于最低价,唯一价,标红
            //for (var x = 0; x < rowCount; ++x)
            //{
            //    var ps = this.View.Model.GetValue("F_Krystal_PriceStatus", x) + "";
            //    if (ps != "A" && ps != "B")
            //    {
            //        grid.SetRowBackcolor(backColor, x);//第x+1行
            //        //grid.SetBackcolor(backColor, 1);//第二行
            //    }
            //}
            #endregion


            #region  批量设置某一行整行背景色  客户端网页都生效
            var grid = this.View.GetControl<EntryGrid>(entityKey);
            var colors = new List<KeyValuePair<int, string>>();

            for (var x = 0; x < rowCount; ++x)
            {
                var ps = this.View.Model.GetValue("F_Krystal_PriceStatus", x) + "";
                if (ps != "A" && ps != "B")
                {
                    //var backColor3 = x % 2 == 0 ? backColor0 : backColor1;
                    colors.Add(new KeyValuePair<int, string>(x, backColor));
                }

            }

            grid.SetRowBackcolor(colors);


            #endregion


            #region 客户端网页都生效 设置价格状态字段的某一行的背景色
            //var grid = this.View.GetControl<EntryGrid>(entityKey);

            grid.SetBackcolor("FPrice", backColor, 1);
            //价格状态不等于最低价,唯一价,标红
            //for (var x = 0; x < rowCount; ++x)
            //{
            //    var ps = this.View.Model.GetValue("F_Krystal_PriceStatus", x) + "";
            //    if (ps != "A" && ps != "B")
            //    {
            //        grid.SetBackcolor("F_Krystal_PriceStatus", backColor, x);//第x+1行
            //        //grid.SetBackcolor(backColor, 1);//第二行
            //    }
            //}

            #endregion


            #region 批量设置价格状态字段的某一行的背景色 客户端网页都生效




            //var grid = this.View.GetControl<EntryGrid>(entityKey);
            //var colors = new List<KeyValuePair<int, string>>();

            //for (var x = 0; x < rowCount; ++x)
            //{
            //    var ps = this.View.Model.GetValue("F_Krystal_PriceStatus", x) + "";
            //    if (ps != "A" && ps != "B")
            //    {
            //        colors.Add(new KeyValuePair<int, string>(x, backColor));
            //    }
            //    //var backColor3 = x % 2 == 0 ? backColor0 : backColor1;

            //}
            //grid.SetCellsBackcolor("F_Krystal_PriceStatus", colors);


            #endregion




            #region 客户端生效,网页端不生效
            //GridSetRowBackcolor(this.View, entityKey, backColor, 1);
            #endregion


        }

        private void GridSetRowBackcolor(IDynamicFormView view, string entityKey, string color, int rowIndex)
        {
            var value = new JSONObject();

            value[rowIndex.ToString()] = color;

            var jo = new JSONObject();

            jo["backcolor"] = value;

            var grid = view.GetControl<EntryGrid>(entityKey);

            var formState = view.GetService<IDynamicFormState>();

            formState.AftInvokeControlMethod(grid.ControlAppearance, "UpdateFieldStates", jo);
 

        }
        #endregion <事件>
    }
}

编译后挂载插件到表单插件

在这里插入图片描述

启动开发环境进行测试

单元格设置背景色

在这里插入图片描述

行背景色

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960912.html

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

相关文章

VitualBox虚拟机重启后配置无法保存,已安装软件变为没有安装

VitualBox虚拟机重启后虚拟机还原为上次开机的状态&#xff0c;安装的安装包配置啥的全部丢失。 按网上的配置了半天也没解决。最终用下面讨巧的办法&#xff0c;即不重启虚拟机。 我们不在重启虚拟机&#xff0c;那我们想关闭虚拟机的时候怎么办呢&#xff1f; 1、按下图所…

104 二叉树的最大深度

解题思路&#xff1a; \qquad 最大深度可以想到使用DFS(深度优先)或BFS(广度优先)来解决。 \qquad DFS&#xff1a;一般用 递归 or 迭代栈。递归实现较为简单。 \qquad BFS&#xff1a;一般用 迭代队列。 DFS&#xff1a; \qquad 对于每个节点&#xff0c;将左子树的最大深…

二进制搭建 Kubernetes v1.20(上)

目录 一、操作系统初始化配置 二、升级Liunx内核 三、部署docker引擎 四、部署etcd集群 五、部署Master组件 六、部署Worker Node组件 hostnameip需要部署k8s集群master0120.0.0.100kube-apiserver kube-controller-manager kube-scheduler etcdk8s集群master0220.0.0.1…

小阿轩yx-部署 KVM 虚拟化平台

小阿轩yx-部署 KVM 虚拟化平台 案例前置知识点 KVM 自 Linux 2.6.20 版本之后就直接整合到 Linux 内核依托 CPU 虚拟化指令&#xff08;如Intel-VT、AMD-V&#xff09;实现高性能的虚拟化支持与 Linux 内核高度整合&#xff0c;在性能、安全性、兼容性、稳定性上都有很好的表…

11day-C++list容器使用

这里写目录标题 1. list的介绍及使用1.1 list的介绍1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 list的迭代器失效 2. list的模拟实现2.1 list的反向迭代器 1. list的介绍及使用 1.1 list的介绍 list的…

Teamcenter用本地胖客户端启动时,可以看到插件的菜单项,但是用Eclipse启动时看不到

用本地胖客户端启动时&#xff0c;可以看到定制包的插件菜单项&#xff0c;但是用Eclipse启动时&#xff0c;看不到&#xff1f; 原因&#xff1a; 是因为Eclipse启动下&#xff0c;是采用 JAVA1.8 来运行的。但是本机的胖客户端是采用JAVA 11来运行的 解决办法&#xff1a;…

二,SSM 搭建环境:持久化层

二&#xff0c;SSM 搭建环境&#xff1a;持久化层 文章目录 二&#xff0c;SSM 搭建环境&#xff1a;持久化层物理建模&#xff1a;创建对应的 数据库和数据表Mybatis 逆向工程 的配置设置执行逆向生成资源归位(逆行生成的内容&#xff0c;移动到对应模块的包当中去)移动&#…

Hive-内部表和外部表

区别 内部表实例 准备数据 查看数据 删除数据 外部表实例 准备数据 查看数据 删除数据 区别 内部表&#xff1a;管理元数据&#xff08;记录数据的文件和目录的信息&#xff09;和数据。当删除内部表时&#xff0c;会删除数据和表的元数据&#xff0c;所以当多个表关…

Creo protoolkit 二次开发(三) 遍历模型的特征

一、特征概念 Creo是基于特征的参数化建模&#xff0c;在模型树上的每个项目都是特征。 模型主要由各类特征构成。以零件模型为例&#xff0c;其基本特征包括基准特征、拉伸特征、孔特征、倒圆角特征、旋转特征、曲面特征、切口特征、阵列特征和扫描特征等。这些特征的叠加形成…

angular入门基础教程(七)系统路由

路由的实现 当我们系统越来复杂&#xff0c;功能越来越多&#xff0c;路由也就是必须的了。在 ng 中如何实现路由呢&#xff1f; 启用路由 在 app 目录下&#xff0c;新建一个 router 目录&#xff0c;把 app.routers.ts 文件拷贝过来&#xff0c;并修改一下。 import { Ro…

【数据结构】链式二叉树的实现和思路分析及二叉树OJ

【数据结构】链式二叉树的实现和思路分析及二叉树OJ &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】链式二叉树的实现和思路分析及二叉树OJ前言一.链式二叉树的定义及结构二.链式二叉树的遍历2.1前序遍历2.2中…

《LeetCode热题100》---<双指针篇四道②>

本篇博客讲解LeetCode热题100道双指针篇中的 第三道&#xff1a;三数之和&#xff08;中等&#xff09; 第四道&#xff1a;接雨水&#xff08;困难&#xff09; 第三道&#xff1a;三数之和&#xff08;中等&#xff09; 法一&#xff1a;暴力枚举&#xff08;三重循环&#x…

Java学习Day18:基础篇8

多态 基本信息&#xff1a; 应用场景&#xff1a; 可以把子类对象赋值给父类对象&#xff0c;实现多态从而使用同一种方法&#xff1b; 多态中调用成员的特点 1.调用成员变量都看左边 调用成员变量:编译看左边&#xff0c;运行也看左边 编译看左边: javac编译代码的时候&a…

【BSV生态亮点】体育进入区块链时代:波兰奥委会与Zetly建立战略伙伴关系

​​发表时间&#xff1a;2024年7月18日 波兰奥运委员会和Zetly宣布正式建立战略伙伴关系。这一合作是波兰将现代技术、数字资产和创新解决方案整合到波兰体育中的重要一步&#xff0c;将把波兰体育产业带入数字时代。 Zetly是一个非常活跃的数字平台&#xff0c;它将体育与区…

3.6.锚框

锚框 ​ 13.4. 锚框 — 动手学深度学习 2.0.0 documentation (d2l.ai) ​ 一类目标检测算法是基于锚框的&#xff0c;步骤如下&#xff1a; ​ 使用多个被称为锚框的区域(边缘框)&#xff0c;预测每个锚框里是否含有关注的物体&#xff0c;如果有&#xff0c;则预测从这个锚…

双指针-【3,4,5,6,7,8】

第三题&#xff1a;快乐数 . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想&#xff1a; 1.每个…

jdk版本管理利器-sdkman

1.什么是sdkman&#xff1f; sdkman是一个轻量级、支持多平台的开源开发工具管理器&#xff0c;可以通过它安装任意主流发行版本&#xff08;例如OpenJDK、Kona、GraalVM等等&#xff09;的任意版本的JDK。通过下面的命令可以轻易安装sdkman: 2.安装 curl -s "https://…

IFM易福门LR3000LR3300液位传感器操作说明

IFM易福门LR3000LR3300液位传感器操作说明

使用ssh-remote连接远程vscode运行yolo项目时的一点坑

使用ssh-remote连接远程vscode运行yolo项目时的一点坑 1.坑1 因为我是直接下载的release包&#xff0c;然后运行 pip install -e .来下载依赖的&#xff0c;那么这个时候需要使用YOLO时都需要在下载的release文件的目录下的py文件才能生效 比方说我下载的yolov8(ultralytic…

SpringBoot 快速上手

1. 环境准备 ⾃检Idea版本: 社区版: 2021.1 -2022.1.4 专业版: ⽆要求 如果个⼈电脑安装的idea不在这个范围, 需要卸载重新安装. Idea 卸载参考: https://blog.csdn.net/qq_19072921/article/details/126408402 (⼀定要删除注册表) 2. Maven 2.1 什么是Maven 官⽅…