[python]表单插件-显示隐藏列

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

[python]表单插件-显示隐藏列

本文介绍如何用Python代码,以实现在简单报表的显示隐藏列的功能 ## 定义报表列 定义了一个DataList数组,其中包含了想要在报表中显示的列名(例如“FNumber”、“FID”和“FJOINDATE”),以及一个DataList2数组,用于存储列的中文标题(例如“员工编号”、“员工ID”和“入职日期”) ```python DataList = ["FNumber", "FID", "FJOINDATE"] DataList2 = ["员工编号", "员工ID", "入职日期"] ``` ## 在过滤框的页签[显示隐藏列]显示 1. 复制元数据:从当前视图的开放参数中复制表单的元数据,以避免直接修改原始数据。 2. 获取布局信息:从复制的元数据中提取当前的布局信息,这是为了能够修改列的显示状态。 3. 处理列信息:检查布局信息中是否包含FieldShowHide控制键,如果存在,则遍历DataList数组,为每一列创建一个Field对象,并设置其名称、字段名和实体键。随后,将这些Field对象添加到布局信息的字段列表中。 4. 更新布局信息:将经过修改的布局信息赋值给事件参数e的LayoutInfo属性,确保这些更改能够被应用到报表的最终布局中。 ```python def OnSetLayoutInfo(e): # 复制元数据 currmetadata = ObjectUtils.CreateCopy(this.View.OpenParameter.FormMetaData) # 获取布局信息 layout_info = currmetadata.GetLayoutInfo() # 检查并处理列信息 columns = layout_info.GetAppearance(CommonFilterConst.ControlKey_FieldShowHide) if columns is not None: for key, caption in zip(DataList, DataList2): field = Field(key) field.Name = LocaleValue(caption) field.FieldName = key field.EntityKey = "" columns.FieldList.Add(field) # 更新布局信息 e.LayoutInfo = layout_info ``` ## 结果 在过滤条件框注册Python插件 ![image.webp](/download/010099c659baba6c41c5bc8b3128f321809f.webp) ![image.webp](/download/0100dd42368170574f42948fbc7b5349340d.webp) ## 完整代码 ```python """ 表单插件_显示隐藏列 """ import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.Contracts") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("Kingdee.BOS.ServiceHelper") clr.AddReference("Kingdee.BOS.App") from Kingdee.BOS import * from Kingdee.BOS.Orm import * from Kingdee.BOS.Orm.DataEntity import * from Kingdee.BOS.ServiceHelper import * from System.ComponentModel import * from Kingdee.BOS.JSON import * from Kingdee.BOS.Core.CommonFilter import * from Kingdee.BOS.Core.CommonFilter.PlugIn import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import * from Kingdee.BOS.Util import * from System.Collections.Generic import * from Kingdee.BOS.Core.Metadata import * from Kingdee.BOS.Core.Metadata.ControlElement import * from Kingdee.BOS.Core.Metadata.FieldElement import * DataList = ["FNumber", "FID", "FJOINDATE"] DataList2 = ["员工编号", "员工ID", "入职日期"] def OnSetLayoutInfo(e): currmetadata = ObjectUtils.CreateCopy(this.View.OpenParameter.FormMetaData) _currLayoutInfo = currmetadata.GetLayoutInfo() columns = _currLayoutInfo.GetAppearance(CommonFilterConst.ControlKey_FieldShowHide) if columns != None: for i in range(0, len(DataList)): newField = Field(DataList[i]) newField.Name = LocaleValue(DataList2[i]) newField.FieldName = DataList[i] newField.EntityKey = "" columns.FieldList.Add(newField) e.LayoutInfo = _currLayoutInfo ```

[python]表单插件-显示隐藏列

本文介绍如何用Python代码,以实现在简单报表的显示隐藏列的功能## 定义报表列定义了一个DataList数组,其中包含了想要在报表中显示的列名...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息