Установите поле "Целевые аудитории" с несколькими значениями в элементе списка
Я пытаюсь установить поле "Целевые аудитории" в элементе списка программным способом. Мне удалось программно установить значение для одной аудитории, но когда я пытаюсь использовать несколько аудиторий, SharePoint пытается интерпретировать значение, которое я задаю, как одну аудиторию, а не как несколько. Я устанавливаю значение с помощью кода ниже.
listItem[listItem.Fields["Target Audiences"].InternalName] = "Audience One";
Я использую этот код для указания нескольких аудиторий, например так:
listItem[listItem.Fields["Target Audiences"].InternalName] = "Audience One; Audience Two";
Когда я делаю это, SharePoint пытается интерпретировать всю строку как одну аудиторию, и я получаю сообщение при редактировании элемента списка, в котором говорится "No exact match was found."
Я использую правильный формат для указания нескольких аудиторий для этого поля, или есть класс, который я должен использовать аналогично SPFieldLookupValue
?
2 ответа
Просто понял, что я никогда не вернулся и ответил на это.
В итоге я сохранил имена аудиторий в столбце, прикрепленном к каждому элементу списка, а затем запросил объектную модель, чтобы узнать, является ли текущий пользователь членом этих аудиторий. Это сработало для меня, потому что я извлекал данные из элемента списка в пользовательской веб-части, и пользователь никогда не видел фактический элемент списка.
Я не знаю, как сохранить несколько аудиторий в SPListItem, но если бы у меня была эта проблема, я бы попытался распечатать значение этого поля из скрипта PowerShell. Что-то вроде:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint");
$site = Microsoft.SharePoint.SPSite("http://yourserver");
$web = $site.openweb();
$list = $web.lists["YourList"];
$item = $list.getitembyid(itemid);
write-output $item["Target Audiences"];
РЕДАКТИРОВАТЬ: нашел некоторую информацию о том, что значение поля Аудитория на самом деле: http://dotnetmafia.sys-con.com/node/1181567/mobile