Добавление пользователей в тип поля UserMulti с использованием клиентской объектной модели - PullRequest
2 голосов
/ 23 февраля 2012

Я немного новичок в SharePoint, поэтому, пожалуйста, потерпите меня.

Мне нужно иметь возможность создать новый элемент списка в одном нашем пользовательском списке, используя объектную модель клиента.Я следовал примеру, описанному на сайте MSDN , и по большей части это сработало.

У нас есть список, который содержит несколько полей, включая тип поля UserMulti.У меня проблемы с добавлением пользователей в это поле.До сих пор я пробовал следующее, но это как-то всегда кажется по умолчанию для системной учетной записи, а не для пользователя, указанного в поле.

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

Нужно ли сначала выполнить какой-либо поиск?Любая помощь приветствуется.Благодарю.

Ответы [ 2 ]

5 голосов
/ 23 февраля 2012

Прошло немного времени, но я понял это в конце. Ниже приведены два подхода, которые вы можете предпринять

  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 голосов
/ 16 сентября 2016

Microsoft имеет вики-статью «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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...