二开实现控制单据体行背景颜色(包括C#和Python脚本示例)

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开实现控制单据体行背景颜色(包括C#和Python脚本示例)

【应用场景】

为了数据看起来更清晰,在单据体根据条件设置行背景色。


【案例演示】

销售订单,控制计价数量大于20时,设置行背景色为黄色。


【实现步骤】

<1>编写表单插件(C#插件和Python插件二者选其一即可),代码如下。 

// C# 插件代码示例

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

namespace DemoPlugin
{
    [HotUpdate, Description("表单插件,设置单据体行颜色")]
    public class SetRowColorPlugin : AbstractBillPlugIn
    {
        public override void AfterBindData(System.EventArgs e)
        {
            base.AfterBindData(e);
            // V1 和 V2 任选其一都可使用,建议用 V2
            //SetBackColorV1();
            SetBackColorV2();
        }

        private void SetBackColorV1()
        {
            var entity = this.View.BusinessInfo.GetEntity("FSaleOrderEntry");
            var entrys = this.View.Model.GetEntityDataObject(entity);
            var grid = this.View.GetControl(entity.Key) as EntryGrid;
            foreach (var entry in entrys)
            {
                var rowIndex = this.View.Model.GetRowIndex(entity, entry);
                if (ObjectUtils.ToDecimal(entry["PriceUnitQty"], 0) > 20)
                {
                    foreach (var field in entity.Fields)
                    {
                        grid.SetBackcolor(field.Key, "#FFFF00", rowIndex);
                    }
                }
            }
        }

        private void SetBackColorV2()
        {
            var entity = this.View.BusinessInfo.GetEntity("FSaleOrderEntry");
            var entrys = this.View.Model.GetEntityDataObject(entity);
            var grid = this.View.GetControl(entity.Key) as EntryGrid;
            var colorRows = new List<KeyValuePair<int, string>>();
            foreach (var entry in entrys)
            {
                var rowIndex = this.View.Model.GetRowIndex(entity, entry);
                if (ObjectUtils.ToDecimal(entry["PriceUnitQty"], 0) > 20)
                {
                    colorRows.Add(new KeyValuePair<int, string>(rowIndex, "#FFFF00"));
                }
            }
            grid.SetRowBackcolor(colorRows);
        }
    }
}
# Python插件代码示例

import clr
clr.AddReference('mscorlib')
from System import *

def AfterBindData(e):
    SetBackColor()

def SetBackColor():
    entity = this.View.BusinessInfo.GetEntity("FSaleOrderEntry")
    entrys = this.View.Model.GetEntityDataObject(entity)
    grid = this.View.GetControl(entity.Key)
    for entry in entrys:
        rowIndex = this.View.Model.GetRowIndex(entity, entry)
        if int(entry["PriceUnitQty"]) > 20:
            for field in entity.Fields:
                grid.SetBackcolor(field.Key, "#FFFF00", rowIndex)

<2>如果用的是C#插件,需要拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。

<3>BOSIDE扩展销售订单,注册表单插件(C#插件和Python插件二者选其一即可),保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开销售订单编辑界面,点击保存菜单,即可通过VS调试或者日志文件观察到最新的服务插件执行顺序。


【参考资料】

单据体前景色及背景色设置【分享】



【金蝶云星空BOS二次开发案例演示】

https://vip.kingdee.com/article/94751030918525696



二开实现控制单据体行背景颜色(包括C#和Python脚本示例)

【应用场景】为了数据看起来更清晰,在单据体根据条件设置行背景色。【案例演示】销售订单,控制计价数量大于20时,设置行背景色为黄色。【...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息