【已解决】动态表单中对基础资料类型的字段赋值问题
金蝶云社区-云社区用户DvbH1234
云社区用户DvbH1234
0人赞赏了该文章 2,374次浏览 未经作者许可,禁止转载编辑于2016年11月29日 15:01:03

版本:k3 cloud 10月27日补丁问题:自定义了一个动态表单,添加了个基础资料类型的字段,并指定基础资料类型为职员,在TreeNodeClick事件下调用如下方法来赋值:
///


///
///

///
///
/// 但具体行数据对象
/// 字段名
/// 职员内码
public void SetValue(Context ct,BusinessInfo binfo, DynamicObject dyObject, string fieldname, long id)
{
BaseDataField fldMaterial = binfo.GetField(fieldname) as BaseDataField;
var materialObj = BusinessDataServiceHelper.LoadSingle(ct, id, fldMaterial.RefFormDynamicObjectType);
fldMaterial.RefIDDynamicProperty.SetValue(dyObject, id);
fldMaterial.DynamicProperty.SetValue(dyObject, materialObj);
}

此方法在5.0和6.0刚发布的时候处理过单据下推时的数据处理,是正常的,但这次用来处理动态表单时发现RefIDDynamicProperty和DynamicProperty两个属性都是null。

其中dyObject对象的构造如下:
Entity peInfo= busInfo.GetEntity(entryKey);

DynamicObject dyObject= new DynamicObject(peInfo.DynamicObjectType);

已尝试对照如下帖子处理该问题,依然不行:
http://club.kisdee.com/forum.php ... A%E6%95%B0%E6%8D%AE

解决办法:
检查所有的基础资料类型的字段,是否全部已经指定了基础资料类型,本问题是漏掉了一个,所以报错了。