2012-02-23 98 views
2

我是一位SharePoint noobie,請耐心等待。使用客戶端對象模型將用戶添加到UserMulti字段類型

我需要能夠使用客戶端對象模型在我們的自定義列表中創建一個新的列表項。我一直在按照MSDN site上描述的例子進行操作,而且大部分工作都是如此。

我們有一個包含多個字段的列表,其中包括UserMulti字段類型。我在添加用戶到該字段時遇到問題。到目前爲止,我已經嘗試了以下方法,但是這似乎總是默認爲系統帳戶而不是該字段中指定的用戶。

... 
    listItem["ProjectMembers"] = "1;#domain\\johndoe"; 
    listItem.Update(); 
    _clientContext.ExecuteQuery(); 

我需要首先進行某種類型的查找嗎?任何幫助表示讚賞。謝謝。

回答

5

花了一點時間,但我最終發現了它。下面是兩種方法可以採取

  1. 分配主要以列表項

    var principal = _rootWeb.EnsureUser("domain\\johndoe") as Principal; 
        listItem["ProjectMembers"] = principal; 
        listItem.Update(); 
        _clientContext.ExecuteQuery(); 
    
  2. 如果你需要一個以上的用戶分配到字段中指定FieldUserValue的列表。

    string[] users = { "domain\\johndoe", "domain\\peterpan" }; 
        var projectMembers = users 
         .Select(loginName => FieldUserValue.FromUser(loginName)) 
         .ToList(); 
    
        listItem["ProjectMembers"] = projectMembers; 
        listItem.Update(); 
        _clientContext.ExecuteQuery(); 
    

我敢肯定有更好的做事方式,你可以將二者結合起來,以確保用戶將其添加到列表之前有效,但這是工作至今。希望這可以幫助別人。

0

Microsoft有一篇wiki文章「SharePoint:使用C#獲取和設置字段的完整指南」,可以提供幫助。 http://social.technet.microsoft.com/wiki/contents/articles/21801.sharepoint-a-complete-guide-to-getting-and-setting-fields-using-c.aspx#Set_and_Get_a_Multi-Person_Field

它包含此示例代碼。

var lotsofpeople = new SPFieldUserValueCollection(web, item["lotsofpeoplefield"].ToString()); 
var personA = web.EnsureUser("contoso\\fred"); 
var personAValue = new SPFieldUserValue(web, personA.ID, personA.LoginName); 
var personB = web.EnsureUser("contoso\\barnie"); 
var personBValue = new SPFieldUserValue(web, personB.ID, personB.LoginName); 
lotsofpeople.Add(personAValue); 
lotsofpeople.Add(personBValue); 
item["lotsofpeoplefield"] = lotsofpeople; 
item.Update(); 
相關問題