[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数组,其中包含了想要在报表中显示的列名...
点击下载文档
本文2024-09-16 17:10:14发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-13976.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章