Поле поиска Sharepoint и WebId="

Я пытаюсь добавить поле поиска в тип контента. Поле имеет это определение:

<Field ID="{c80e8e3c-7124-4772-a39d-5b69f131d542}"
         Name="Site"
         Group="Tieto Intranet Columns"
         Type="Lookup"
         DisplayName="Site"
         StaticName="Site"
         List="Lists/FavoriteSites"
         ShowField="Title"
         PrependId="TRUE"
         WebId="~sitecollection"
   >

Список избранных сайтов, на который я хочу ссылаться в этом поле поиска, существует в области семейства сайтов. Развертывание проходит нормально, но когда я создаю список на основе типа контента с этим поиском, создается впечатление, что поле поиска не связано со списком избранных сайтов. Я добавляю некоторые данные в FavoriteSites и затем пытаюсь добавить что-то во второй список с полем поиска на FavoriteSites. К сожалению, выпадающий список, который должен показать мне данные из списка избранных сайтов, пуст.

Когда я вручную создаю новую поисковую колонку для FavoriteSites, все в порядке.

У кого-нибудь есть идея, где может быть проблема в этом определении поиска?

ОБНОВИТЬ:

Как рекомендовал Рич, я установил уровень ведения журнала в Verbose и нашел это сообщение:

Атрибуты WebId=~sitecollection и List=Lists/FavoriteSites, указанные для поля {c80e8e3c-7124-4772-a39d-5b69f131d542} в функции {d86c7005-d31d-43ae-b86b-38f28b81072e}, не удалось найти. Set List={39CEC23E-FB28-47B3-BC36-C21780AD1D94}.

Я не понимаю, потому что список FavoriteSites существует. Список избранных сайтов, а также второй список с полем "Сайт" развернуты одной функцией в области семейства сайтов.

Я не могу указать список в поиске по GUID, потому что я не знаю guid во время развертывания.

3 ответа

Решение

Это сообщение журнала означает, что Lists/FavoriteSites не существует ни на корневом сайте семейства сайтов, ни на сайте, где активируется функция (если последний является дочерним сайтом).

Если списки / избранные сайты создаются компонентом, убедитесь, что он активирован, прежде чем использовать функцию "Поля". Поместите элемент ListInstance прямо над элементом Field, если это необходимо. Но сообщение ясно: список не существует в то время, когда ваше настраиваемое поле предоставляется семейству сайтов. И именно поэтому он не работает.

Чтобы было ясно, список должен существовать во время активации функции, а не только при создании экземпляра списка, который будет использовать это поле.

PS Я нашел это, проверив "документацию" для метода Microsoft.SharePoint.SPFieldElement.PerformFixUpIfLookUpField.

У меня такая же проблема. В итоге моя проблема заключалась в том, что вы не можете декларативно ссылаться на список, который находится в корневой сети. Токен ~ sitecollection в свойстве WebId не работает, потому что он будет записывать Guid между фигурными скобками, в то время как SharePoint ожидает его без фигурных скобок (объяснение можно найти на http://martensboarterstun.wordpress.com/2013/06/15/how-to-create-a-list-definition-with-a-lookup-field-declaratively/). Я закончил тем, что разместил Rootweb ID в своем определении списка.

Попробуйте изменить поле списка на идентификатор списка, например List="{4641f5f2-b358-4805-9d7d-e910d2243fb5}"

Я также рекомендовал бы использовать SharePointManager для просмотра определения поля вашего поля, созданного вручную, и для быстрого поиска цветущих направляющих списков и т. Д.

Другие вопросы по тегам