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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM