二开案例.列表插件.列表条件格式化

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

二开案例.列表插件.列表条件格式化

【应用场景】对列表表格中的数据行进行格式化显示,目前仅支持设置前景色和背景色

【案例演示】采购订单列表,设置单双行显示不同的前景色和背景色,备注不为空的单元格设置特殊颜色,如下图所示。

【实现步骤】

<1>编写列表插件,如下所示。

using Kingdee.BOS;

using Kingdee.BOS.Core.List.PlugIn;

using Kingdee.BOS.Core.List.PlugIn.Args;

using Kingdee.BOS.Core.Metadata;

using Kingdee.BOS.Util;

using System;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.Business.PlugIn

{

    /// <summary>

    /// 【列表插件】列表条件格式化

    /// </summary>

    [HotUpdate]

    [Description("【列表插件】列表条件格式化")]

    public class FormatRowListPlugIn : AbstractListPlugIn

    {

        /// <summary>

        /// 列表行数据格式化

        /// </summary>

        /// <param name="args"></param>

        public override void OnFormatRowConditions(ListFormatConditionArgs args)

        {

            base.OnFormatRowConditions(args);

            var dataRow = ((DynamicObjectDataRow)args.DataRow).DynamicObject;

            if (!dataRow.DynamicObjectType.Properties.ContainsKey("fidentityid"))

            {

                return;

            }

            // 获取行号

            var fidentityid = Convert.ToInt32(dataRow["fidentityid"]);

            // 判断是单行还是双行

            var singleRow = fidentityid % 2 == 1;

            // 设置单双行显示不同的颜色

            var fc = new FormatCondition();

            // fc.Key = "FMaterialId";// 格式化指定列

            fc.ApplayRow = true;// 格式化整行

            if (singleRow)

            {

                fc.ForeColor = "#000000"; // 前景色单行黑色双行红色

                fc.BackColor = "#FFFFFF"; // 背景色单行白色双行蓝色

            }

            else

            {

                fc.ForeColor = "#FF0000";

                fc.BackColor = "#9FC5E8";

            }

            args.FormatConditions.Add(fc);

            // 备注不为空时设置前景色为紫色背景色为黄色

            if (!dataRow["FEntryNote"].IsNullOrEmptyOrWhiteSpace())

            {

                fc = new FormatCondition();

                fc.Key = "FEntryNote";

                fc.ForeColor = "#FF00FF";

                fc.BackColor = "#FFFF00";

                fc.ApplayRow = false;

                args.FormatConditions.Add(fc);

            }

        }

    }

}



对应Python代码如下所示,坑爹编辑器不支持Python代码排版,请参考截图排版。

/*

#【Python】【列表插件】列表条件格式化

def OnFormatRowConditions(args):

if args.DataRow.DynamicObject.DynamicObjectType.Properties.ContainsKey("fidentityid") == False:

return

fidentityid = args.DataRow.DynamicObject["fidentityid"]

# 判断是单行还是双行

singleRow = fidentityid % 2 == 1

# 设置单双行显示不同的颜色

fc = FormatCondition()

# fc.Key = "FMaterialId" # 格式化指定列

fc.ApplayRow = True # 格式化整行

if singleRow == True:

fc.ForeColor = "#000000" # 前景色单行黑色双行红色

fc.BackColor = "#FFFFFF" # 背景色单行白色双行蓝色

else:

fc.ForeColor = "#FF0000"

fc.BackColor = "#9FC5E8"

args.FormatConditions.Add(fc)

# 备注不为空时设置前景色为紫色背景色为黄色

if args.DataRow.DynamicObject["FEntryNote"] != None and args.DataRow.DynamicObject["FEntryNote"].strip() != '':

fc = FormatCondition()

fc.Key = "FEntryNote"

fc.ForeColor = "#FF00FF"

fc.BackColor = "#FFFF00"

fc.ApplayRow = False

args.FormatConditions.Add(fc);

 */


<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,注册列表插件,保存元数据,开发完毕。


如果使用Python插件,参考如下截图。


现在可以登录业务站点,打开采购订单列表,检验一下插件效果啦。















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696


二开案例.列表插件.列表条件格式化

【应用场景】对列表表格中的数据行进行格式化显示,目前仅支持设置前景色和背景色。【案例演示】采购订单列表,设置单双行显示不同的前景色...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息