电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

下拉列表联动处理(Python实现)

来源:金蝶云社区作者:金蝶2024-09-167

下拉列表联动处理(Python实现)

先说下需求:

# 设置了两个下拉列表,怎样做到一个下拉列表控制另一个下拉列表呢?

# 例如第一个下拉列表内容为ABCD,第二个下拉列表为A1、A2、A3、B1、B2、B3、C1、C2、C3、D1、D2、D3,怎样做到第一个下拉列表选择A的时候,再选第二个下拉列表只显示A1、A2、A3呢?


实现思路:

1、重写OnInitialize事件,动态绑定两个下拉框的数据

2、重写DataChanged事件,根据第一个下拉框的选中值,动态加载填充第二个下拉框的值


2.webp


1.webp


import clr
clr.AddReference("Kingdee.BOS")
from Kingdee.BOS import LocaleValue
from Kingdee.BOS.Core.Metadata import EnumItem
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import ComboFieldEditor
from System.Collections.Generic import *
from System import StringComparison
def OnInitialize(e):
    array1 = ["A", "B", "C", "D"]
    newList = List[EnumItem]()
    seq = 0
    for item in array1:
        newItem = EnumItem()
        newItem.Seq = seq
        newItem.Value = item
        newItem.Caption = LocaleValue(item, this.View.Context.UserLocale.LCID)
        newList.Add(newItem)
        seq = seq + 1
        
    #获取fieldEditor来设置下拉的选项列表
    fieldEditor = this.View.GetControl("FCombo1")
    fieldEditor.SetComboItems(newList)
    
    newList2 = List[EnumItem]()
    seq = 0
    dict = {'A': ['A1', 'A2', 'A3'], 'B': ['B1', 'B2', 'B3'], 'C': ['C1', 'C2', 'C3'], 'D': ['D1', 'D2', 'D3']}
    for item in dict['A']:
        newItem = EnumItem()
        newItem.Seq = seq
        newItem.Value = item
        newItem.Caption = LocaleValue(item, this.View.Context.UserLocale.LCID)
        newList2.Add(newItem)
        seq = seq + 1
        
    fieldEditor2 = this.View.GetControl("FCombo2")
    fieldEditor2.SetComboItems(newList2)
    
def DataChanged(e):
    if e.Field.Key.Equals("FCOMBO1", StringComparison.OrdinalIgnoreCase):
        combo1Value = this.View.Model.GetValue("FCombo1").ToString()
        dict = {'A': ['A1', 'A2', 'A3'], 'B': ['B1', 'B2', 'B3'], 'C': ['C1', 'C2', 'C3'], 'D': ['D1', 'D2', 'D3']}
        array1 = dict[combo1Value]
        if len(array1) > 0:
            newList = List[EnumItem]()
            seq = 0
    
            for item in array1:
                newItem = EnumItem()
                newItem.Seq = seq
                newItem.Value = item
                newItem.Caption = LocaleValue(item, this.View.Context.UserLocale.LCID)
                newList.Add(newItem)
                seq = seq + 1
            fieldEditor2 = this.View.GetControl("FCombo2")
            fieldEditor2.SetComboItems(newList)


public override void OnInitialize(InitializeEventArgs e)
{
    base.OnInitialize(e);
    //新的枚举列表
    List<EnumItem> newList = new List<EnumItem>();
    string[] array = { "A", "B", "C", "D" };
    for (var i = 0; i < array.Length; i++)
    {
        newList.Add(new EnumItem
        {
            Seq = i,
            Value = array[i],
            Caption = new LocaleValue(array[i], this.Context.UserLocale.LCID)
        });
    }
    var dic = new Dictionary<string, List<string>>
    {
        { "A", new List<string>() { "A1", "A2", "A3"} },
        { "B", new List<string>() { "B1", "B2", "B3"} },
        { "C", new List<string>() { "C1", "C2", "C3"} },
        { "D", new List<string>() { "D1", "D2", "D3"} }
    };
    List<EnumItem> FCombo2 = new List<EnumItem>();
    int index = 0;
   

下拉列表联动处理(Python实现)

先说下需求:# 设置了两个下拉列表,怎样做到一个下拉列表控制另一个下拉列表呢?# 例如第一个下拉列表内容为ABCD,第二个下拉列表为A1、...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信