分享一个列表查询查看多选基础资料的解决方案
金蝶云社区-星星火
星星火
16人赞赏了该文章 9,388次浏览 未经作者许可,禁止转载编辑于2014年04月24日 14:14:16

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

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