K3Cloud DynamicObject数据包操作

DynamicObject的结构非常简单明了,就是一个字典,类似于一个Dictionary<string, object>,其中的object可能是一个简单值(普通字段),可能是一个复杂值(如基础资料字段),更可能是一个集合(如单据体);

如果值是一个集合,则这个集合的成员,又会是一个DynamicObject对象。

实际上,我们并不推荐伙伴直接操作DynamicObject,所以也不会提供此方面的介绍。

我们是希望开发者通过如下方式读取字段数据:

1. 在界面插件中,通过如下方式取数:
this.Model.GetValue(key, rowIndex);

2. 在其他缺少Model的地方,则采用如下方式取数:
普通字段:
var field = businessInfo.GetField(key);
string value = field.DynamicProperty.GetValue(dynamicObject);

基础资料字段:
var baseField = businessInfo.GetField(key) as BaseDataField;
long id = Convert.ToInt64(baseField.RefIdDynamicProperty.GetValue(dynamicObject));
DynamicObject bdInfo = baseField.DynamicProperty.GetValue(dynamicObject) as DynamicObject;

单据体:
var entity = businessInfo.GetEntity(key);
DynamicObjectCollection rows = entity.DynamicProperty.GetValue(dynamicObject) as DynamicObjectCollection;

多选辅助资料:
MulAssistantField targetFld = businessInfo.GetField(key) as MulAssistantField;
DynamicObjectCollection mulAssiRows = targetFld.RefEntityDynamicProperty.GetValue(headObj) as DynamicObjectCollection;
foreach(var row in mulAssiRows)
{
    string id = Convert.ToString(targetFld.RefIDDynamicProperty.GetValue(row));
    DynamicObject bdInfo = targetFld.DynamicProperty.GetValue(row) as DynamicObject;
}

多选基础资料,类似于多选辅助资料,不赘述;
上述方式,都是通过字段、实体上的DynamicProperty属性到DynamicObject中取数,此属性也提供了SetValue方法赋值;

3. 既没有Model,也没有字段元数据时,才根据DynamicObject本身的结构,逐层往下取数(高级):
语句1:取简单值
string strValue = Convert.ToString(dynamicObject[key]);
语句2:取复杂值
DynamicObject bdInfo = dynamicObject[key] as DynamicObject;
语句3:取集合,及集合中字段值
DynamicObjectCollection mulAssiRows = dynamicObject[entityKey]  as DynamicObjectCollection;
foreach(var row in mulAssiRows)
{
        string id = Convert.ToString(row[key]);
        DynamicObject bdInfo = row[key] as DynamicObject;
}

转载于:https://www.cnblogs.com/jlz-s/p/5541318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值