• 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;
    }

  • 相关阅读:
    基于水利遥测终端机的山洪灾害水雨情监测解决方案
    水利遥测RTU助力灌区渠道流量监测解决方案
    环保数采仪助力企业智慧用电工况监测系统
    Linq中SingleOrDefault、FirstOrDefault的用法
    private、 protected、 public、 internal 修饰符的访问权限
    Bootstrap 表格
    自我介绍
    周总结
    目前流行的源程序版本管理软件和项目管理软件都有哪些, 各有什么优缺点?
    “模仿”还是“创新”
  • 原文地址:https://www.cnblogs.com/jlz-s/p/5541318.html
Copyright © 2020-2023  润新知