Установить поле "Целевая аудитория" с несколькими значениями в элементе списка

Я пытаюсь программно установить поле «Целевая аудитория» для элемента списка. Мне удалось программно установить значение для одной аудитории, но когда я пытаюсь использовать несколько аудиторий, 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?


person Kyle Trauberman    schedule 08.01.2010    source источник
comment
Кайл, не могли бы вы опубликовать ваше окончательное решение? У меня такая же проблема, как и у вас.   -  person    schedule 29.06.2010
comment
Не могли бы вы опубликовать ваше окончательное решение?   -  person Unknown    schedule 07.12.2016


Ответы (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"];

РЕДАКТИРОВАТЬ: нашел некоторую информацию о том, что на самом деле представляет собой значение поля Audience: http://dotnetmafia.sys-con.com/node/1181567/mobile

person naivists    schedule 09.01.2010
comment
Я сделал это, и значение скрипта имеет следующий формат: GUID, GUID, GUID ;;;; (один идентификатор GUID для каждой аудитории, разделенный запятой, за которой следуют 4 точки с запятой.) Когда я использовал этот формат для установки поля, а затем просматривал поле в режиме редактирования, он содержал введенный точный текст (направляющие, за которыми следовали 4 точки с запятой. .) - person Kyle Trauberman; 09.01.2010
comment
Другими словами: Sharepoint не выполняет никакого перевода значения, установленного в поле. - person Kyle Trauberman; 09.01.2010
comment
Думаю, вам тоже стоит прочитать этот пост: dotnetmafia.sys-con.com/node / 1181567 / мобильный - person naivists; 09.01.2010
comment
Эта ссылка предназначена для использования аудиторий в веб-части. Я пытаюсь прослушать элемент списка. Я попробовал именно то, что говорится в этом сообщении, но поскольку в элементе списка нет свойства AuthorizationFilter, я установил отформатированную строку как значение поля "Target Audiences". В любом случае, я придумал решение моей проблемы, и вскоре я опубликую ответ. Я все же хотел бы знать, можно ли это сделать с помощью OOB SharePoint Audience Targeting. - person Kyle Trauberman; 12.01.2010

Просто понял, что больше не вернусь, и ответил на это.

В итоге я сохранил имена аудиторий в столбце, прикрепленном к каждому элементу списка, а затем запросил объектную модель, чтобы узнать, является ли текущий пользователь членом этих аудиторий. Это сработало для меня, потому что я извлекал данные из элемента списка в настраиваемой веб-части, а пользователь никогда не видел фактический элемент списка.

person Kyle Trauberman    schedule 18.03.2011