2016-04-29 2 views
1

を作成されている2013そのアップロードされたドキュメントセットにプロパティ/メタデータを追加する方法に関するドキュメントを探します。ドキュメントセットがアップロードするフォルダには、事前に定義されたプロパティがあります。私はそれらを設定する必要があります。Sharepointの私は成功したドキュメントセットを作成することはできませんが、午前VB.NET/C#</p> <p>にプログラム的にリストに新しいドキュメントセットをアップロードするには、SharePoint 2013 ECMを使用していますどのようにドキュメントセットにプロパティを追加する

次のコードは、新しいドキュメントセットを作成します。しかし、そこからプロパティを追加する方法については私がインターネット上で見つけることができるゼロの情報があります。 Sharepoint 2010ライブラリでは、DocumentSet.Createにプロパティフィールドが含まれていますが、2013は表示されません。

Dim context As ClientContext = New ClientContext("URL") 
      context.Credentials = New NetworkCredential("Username", "Password") 

      'Get the document library in which the document set has to be created 
      Dim list As List = context.Web.Lists.GetById(New Guid("dc9e7aa5-5ac3-499c-a967-fa8f04bf1c90"))      

      'Get the parent folder where the document set has to be created 
      Dim parentFolder As Folder = list.RootFolder 

      'Get the "Document Set" content type by id (Document Set content type Id : 0x0120D520) for the document library 
      Dim ct As ContentType = context.Web.ContentTypes.GetById("0x0120D520") 
      context.Load(ct) 
      context.ExecuteQuery() 

      'Create a new document set 
      'A new document set will be created in "Documents" library as "Test Document" under which you can add the documents 
      DocumentSet.Create(context, parentFolder, dsName, ct.Id) 
      context.ExecuteQuery() 

答えて

2

は、ドキュメントに関連付けられているリスト項目を経由してそのプロパティを設定することができます例

Using context = New ClientContext(webUrl) 
    context.Credentials = credentials 

    'Create a document set 
    Dim list As List = context.Web.Lists.GetByTitle("Documents") 
    Dim parentFolder As Folder = list.RootFolder 
    Dim ct As ContentType = context.Web.ContentTypes.GetById("0x0120D520") 
    context.Load(ct) 
    context.ExecuteQuery() 
    Dim result = DocumentSet.Create(context, parentFolder, dsName, ct.Id) 
    context.ExecuteQuery() 

    'Set DocSet properties 
    Dim docSetUrl = result.Value 
    Dim folder = context.Web.GetFolderByServerRelativeUrl(docSetUrl) 
    folder.ListItemAllFields("DocumentSetDescription") = "Orders 2016" 
    folder.ListItemAllFields.Update() 
    context.ExecuteQuery() 

End Using 

を設定結果

+0

エラーが発生しました:「列 'App No'は存在しません。別のユーザーによって削除されている可能性があります。助言がありますか? – Cyassin

+0

おそらくこのエラーは、提供された列名 'App No'がその表示名に対応しているが、' ListItemAllFields'がフィールド内部名を期待しているために発生する可能性があるので、内部名を指定してください。 –

+0

ありがとうVadim、 私は内部名私は週末にクライアントとのコミュニケーション・ポイントがなく、その情報にアクセスすることなく作業していました。 代わりに、folder.Properties.Item( "App No")= "blah"を使って解決することができました。それがなぜ機能するのかを理解しようとすると、そのメソッドは表示名を受け入れますか? プロジェクトを完成させる立場に立てることができたコードの残りの部分について大きな感謝をします。 – Cyassin

0

ドキュメントセットオブジェクトのItemプロパティでプロパティを設定する必要があります。この(C#のコードのために申し訳ありません)のように:ドキュメント・セットが作成されると

DocumentSet myDocSet = DocumentSet.Create(x, x, x, x): 
SPListItem myDocSetItem = myDocSet.Item; 

myDocSetItem[property] = value; 
+0

ありがとうございますが、Sharepoint 2013を使用していて、DocumentSetオブジェクトがDocumentSet.Create() – Cyassin

+2

から返されるようにするクライアントツールを使用していない場合は、Vadimによって転記されたサンプルを使用してください。 DocumentSetをListItemとして取得する必要があります – Verthosa

関連する問題