列表插件:动态创建列给列赋值,并按动态列格式化单元格颜色

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

列表插件:动态创建列给列赋值,并按动态列格式化单元格颜色

一、概述

本篇主要介绍列表通过插件的方式动态创建列并给列赋值,同时按动态列格式化单元格颜色。。


二、详情

2.1 以【出差申请单列表】例,动态增加一列【随机码】,如果随机码是 偶数 则当前单元格为 蓝色


参考代码如下:

using Kingdee.BOS.Core.List.PlugIn;
using Kingdee.BOS.Core.List.PlugIn.Args;
using System;
using System.Collections.Generic;
using System.Linq;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS;

namespace BOS.Debug.PCPlugIn
{
    /// <summary>
    /// 列表插件
    /// </summary>
    [System.ComponentModel.Description("列表插件--动态列 & 标记列颜色")]
    public class ListPlugIn_DynCol : AbstractListPlugIn
    {
        //动态列的值,key=内码;value=动态列值
        Dictionary<string, int> dic = new Dictionary<string, int>();

        //动态添加列
        public override void CreateListHeader(CreateListHeaderEventArgs e)
        {
            var header = e.ListHeader.AddChild();//将动态列放在列表的最后
            //header = e.ListHeader.AddChild(0);//将动态列放在列表的指定位置
            header.Key = "F_Dyn_Col";
            header.Caption = new Kingdee.BOS.LocaleValue("动态列(随机码)");
            header.FieldName = "F_Dyn_Col";
            header.ColType = SqlStorageType.Sqlnvarchar;
            header.Width = 200;
            header.Visible = true;
            header.ColIndex = e.ListHeader.GetChilds().Max(o => o.ColIndex) + 1;
        }

        public override void FormatCellValue(FormatCellValueArgs args)
        {
            base.FormatCellValue(args);
            if (args.Header.Key.Equals("F_Dyn_Col", StringComparison.OrdinalIgnoreCase))
            {
                var pkid = args.DataRow["fid"].ToString();
                var m = Guid.NewGuid().GetHashCode();
                var formatVal=new Random(m).Next(10000);
                //赋值
                args.FormateValue = formatVal.ToString();
                dic[pkid] = formatVal;
            }
        }

        public override void OnFormatRowConditions(ListFormatConditionArgs args)
        {
            //按当前内码取对应动态列值
            var pkid = args.DataRow["fid"].ToString();
            var cellVal = dic[pkid];
            if (cellVal%2==0)
            {
                //偶数随机码标 蓝色
                var fc = new FormatCondition();
                fc.Key = "F_Dyn_Col";//未指定Key,则是设置整行的背景色
                fc.BackColor = "#62a8f1";
                args.FormatConditions.Add(fc);
            }
        } 
    }
}


列表插件:动态创建列给列赋值,并按动态列格式化单元格颜色

一、概述本篇主要介绍列表通过插件的方式动态创建列并给列赋值,同时按动态列格式化单元格颜色。。二、详情2.1 以【出差申请单列表】例,...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息