列表动态创建列(Python实现)原创
金蝶云社区-邱育华
邱育华
10人赞赏了该文章 1885次浏览 未经作者许可,禁止转载编辑于2022年02月28日 14:08:56

参考社区老师的二开文章:二开案例.列表插件.列表动态创建列,重写一个Python版本的实现,供参考。


import clr 
clr.AddReference("System")
clr.AddReference("System.Core")
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.Core")

from System import *
from Kingdee.BOS import *
from Kingdee.BOS.Core.List.PlugIn import *
from Kingdee.BOS.Core.List.PlugIn.Args import *
from Kingdee.BOS.Util import *
from Kingdee.BOS import LocaleValue
from System import StringComparison

def CreateListHeader(e):
    header = e.ListHeader.AddChild() 
    header.Caption = LocaleValue("动态列1")
    header.Key = "FDynamicColumn1"
    header.FieldName = "FDynamicColumn1" 
    header.ColType = SqlStorageType.Sqlnvarchar 
    header.Width = 200 
    header.Visible = True 
    maxCol = max(e.ListHeader.GetChilds(), key = lambda x: x.ColIndex)
    header.ColIndex = maxCol.ColIndex + 1
    
    header = e.ListHeader.AddChild() 
    header.Key = "FDynamicColumn2" 
    header.FieldName = "FDynamicColumn2" 
    header.Caption = LocaleValue("动态列2") 
    header.ColType = SqlStorageType.Sqlnvarchar 
    header.Width = 300 
    header.Visible = True 
    maxCol = max(e.ListHeader.GetChilds(), key = lambda x: x.ColIndex)
    header.ColIndex = maxCol.ColIndex + 1
    
def FormatCellValue(e):
    if e.Header.Key.Equals("FDynamicColumn1", StringComparison.OrdinalIgnoreCase):
        e.FormateValue = '''{0}=>{1}'''.format(e.Header.Caption, str(DateTime.Now))
    elif e.Header.Key.Equals("FDynamicColumn2", StringComparison.OrdinalIgnoreCase):
        e.FormateValue = '''{0}=>{1}'''.format(e.Header.Caption, Guid.NewGuid())

image.png

赞 10