二开案例.列表插件.列表条件格式化
【应用场景】对列表表格中的数据行进行格式化显示,目前仅支持设置前景色和背景色。
【案例演示】采购订单列表,设置单双行显示不同的前景色和背景色,备注不为空的单元格设置特殊颜色,如下图所示。
【实现步骤】
<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
二开案例.列表插件.列表条件格式化
本文2024-09-23 04:21:00发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164733.html