分享一个列表查询查看多选基础资料的解决方案

目前K/3 CLoud中对于多选基础资料暂不提供列表查询和显示功能。因此二次开发可以考虑自己来实现,这里给大家一个参考示例,抛砖引玉,希望对大家有所帮助。
1、首先对于需要列表查询多选基础资料的单据,针对多选基础资料字段,增加一个相对应的辅助字段(多语言字段元素)
2、编写相应的插件,以下示例提供python示例和C#示例

python:

import clr
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.DataEntity')
from Kingdee.BOS.Util import *
from Kingdee.BOS import LocaleValue
from Kingdee.BOS.Core.Metadata import *
from Kingdee.BOS.Core.Bill.PlugIn import *
from Kingdee.BOS.Orm.DataEntity import *
from System import *

def DataChanged(e):    
    if e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase):
        ##获取多选基础资料数据
        dataList = this.Model.GetValue("FMulBase")    
        if dataList is None: 
            return
        localValue = LocaleValue()    
        for  data in dataList:
                  dyobj =data["FMulBase"]
                  value = dyobj["Name"]
                  localValue.Merger(value, ";")
             ##对辅助字段赋值     
        this.Model.SetValue("FMulLangText", localValue);

C#:

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;

namespace Kingdee.BOS.Business.PlugIn
{
[System.ComponentModel.Description("演示多选基础资料查询和列表显示插件")]
public class DemoBillEdit:AbstractBillPlugIn
{
public override void DataChanged(Core.DynamicForm.PlugIn.Args.DataChangedEventArgs e)
{
if (e.Key.Equals("FMulBase", StringComparison.InvariantCultureIgnoreCase))
{
DynamicObjectCollection dataList = this.Model.GetValue("FMulBase") as DynamicObjectCollection;
if (dataList.IsNullOrEmpty()) return;
LocaleValue localValue = new LocaleValue();

foreach (var data in dataList)
{
LocaleValue value = (data["FMulBase"] as DynamicObject)["Name"] as LocaleValue;
localValue.Merger(value, ";");
}
this.Model.SetValue("FMulLangText", localValue);
}
}
}
}

通过上述处理,我们就可以变相的实现多选基础资料的查询了,实际上查询的是辅助字段,而且支持多语言。

posted @ 2014-08-27 11:32  范永强  阅读(319)  评论(0编辑  收藏  举报