2017-04-19 52 views
0

我與MFiles API的工作...MFiles API設定的PropertyValue

我想一個propertyDef傳遞到...的PropertyValue

此代碼工作......但我必須創建MFiles首先對象。

ObjectVersionAndProperties objVersion = 
mFilesStructure.MFileVault.ObjectOperations.CreateNewObject(objTypeID, 
propValues); 

var testPropValues = new PropertyValues(); 
testPropValues = FilesStructure.MFileVault.ObjectPropertyOperations.GetProperties(objVersion.ObjVer); 

    var testPropValue = new PropertyValue(); 
    testPropValue = testPropValues.SearchForProperty(typeClientID); 

它做工精細「testPropValue」擁有所有財產正確設置espacially數據類型......但不想在第一次創建MFiles ...

這應該做同樣的,在但我的意見並不

var test = new PropertyDef(); 
test = mFilesStructure.MFileVault.PropertyDefOperations.GetPropertyDef(typeClientID); 
var testPropValue = new PropertyValue(); 
testPropValue.PropertyDef = test.ID; 

屬性不正確設置...

任何一個可以幫助

最好的問候,

斯蒂芬

回答

1

我只是碰到這種偶然尋找別的東西,以爲我可能有幫助。

你實際上已經有點倒退了。新對象的創建實際上是過程中的最後一步。您需要創建PropertyValue()的集合,方法是創建每個PropertyValue(),然後將它們添加到集合中。

因此,像這樣:

public static PropertyValue GetPropertyValue(int propertyDefId, object value) 
    { 
     //resolve property def by ID 
     PropertyDef propertyDef = Vault.PropertyDefOperations.GetPropertyDef(propertyDefId); 

     //create the property value with prop def ID and value 
     return GetPropertyValue(propertyDefId, propertyDef.DataType, value); 
    } 

    public static PropertyValue GetPropertyValue(int propertyDefId, MFDataType dataType, object value) 
    { 
     PropertyValue propertyValue = new PropertyValue(); 
     propertyValue.PropertyDef = propertyDefId; 
     propertyValue.TypedValue.SetValue(dataType, value); 

     return propertyValue; 
    } 

    public static ObjectVersionAndProperties CreateDocument(PropertyValues propertyValues, string filepath, Vault vault) 
    { 
     // Create the Source File object from the filepath. 
     SourceObjectFile sourceFile = new SourceObjectFile(); 
     sourceFile.SourceFilePath = filepath; 
     sourceFile.Extension = Path.GetExtension(filepath).TrimStart('.'); 
     sourceFile.Title = Path.GetFileNameWithoutExtension(filepath).TrimEnd('.'); 

     // Create the document object. 
     return vault.ObjectOperations.CreateNewSFDObject((int)MFBuiltInObjectType.MFBuiltInObjectTypeDocument, 
      propertyValues, sourceFile, true); 
    } 

一旦設置了上述功能,你可以打電話給他們喜歡的:

 //If the document doesn't exist, go ahead and create a new one 
    //creat and add all the properties 
    PropertyValues props = new PropertyValues(); 
    //class 
    props.Add(-1, HelperMF.GetClassPropertyValue(classId, env.Vault)); 
    //job 
    int jobId = env.Vault.ValueListItemOperations.GetValueListItemByDisplayID(Structure.ObjType.Job.ID, jobDisplayId).ID; 
    props.Add(-1, HelperMF.GetPropertyValue(Properties.Job.ID, jobId, env.Vault)); 
    //estimates 
    props.Add(-1, HelperMF.GetPropertyValueFromListOfDisplayIds(env.Vault, Properties.Estimate.ID, 
         MFDataType.MFDatatypeMultiSelectLookup, Structure.ObjType.Estimate.ID, estimateDisplayIds)); 
    //Add the relationship to the return doc that was uploaded 
    props.Add(-1, HelperMF.GetPropertyValue(Properties.Document.ID, movingDocId, env.Vault)); 

    //create the new object in the vault 
    ObjectVersionAndProperties newDoc = HelperMF.CreateDocument(props, docDownloadPath, env.Vault); 

我用了很多的幫助函數和類,但你應該得到的從我的樣品中獲得。另外,我強烈建議你使用M-Files社區網站進行研究,因爲他們有很多代碼示例專門針對M-Files。

https://community.m-files.com/

另外,如果你還沒有使用的API文檔,因爲它也包括代碼示例。

http://www.m-files.com/api/documentation/2015.2/

希望這有助於, 邁克