Поле поиска 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 для просмотра определения поля вашего поля, созданного вручную, и для быстрого поиска цветущих направляющих списков и т. Д.