Поле поиска в качестве столбца сайта через CAML
Я пытаюсь создать поле Lookup в качестве столбца сайта через CAML. Список, который я хочу использовать в качестве источника поиска, создается в Feature Receiver, поэтому я не знаю его ID. Я прочитал несколько сообщений в блоге, которые указывают, что я могу просто поместить путь в список в атрибуте List. Из комментариев к этой публикации видно, что это решение работает для некоторых людей, но не для других. Я в последней группе.
Когда я пытаюсь связать тип контента, который использует столбец поискового сайта I: "Исключение из HRESULT: 0x80040E07"
<Field
ID="{da94e56b-428f-4b95-b4c6-24aed0256475}"
Name="Test_x0020_Lookup_x0020_Column"
StaticName="Test_x0020_Lookup_x0020_Column"
DisplayName="Test Lookup Column"
Type="Lookup"
Required="FALSE"
List="Lists/Test"
ShowField="Title"
PrependId="TRUE"
Group="Test Site Columns" />
<ContentType
ID="0x0100B6D92594DDCE8E479D0EB0C414C463B0"
Name="Test Lookup Content Type"
Version="0"
Group="Test Content Types">
<FieldRefs>
<FieldRef
ID="{da94e56b-428f-4b95-b4c6-24aed0256475}"
Name="Test_x0020_Lookup_x0020_Column"
Required="TRUE" />
</FieldRefs>
</ContentType>
Обязательно добавьте это свойство при создании сайта coloumn Overwrite = "TRUE"
Путь к списку в атрибуте List работает, я сделал это в своем проекте и был успешным. Одна вещь, которую я хотел, чтобы вы проверили, - это порядок этой функции. Вы выполняете функции в ручном режиме? или использовать их в onet.xml. Потому что, когда ваша функция типа контента выполняется, уже должен быть список, который нужно передать.
Также вы должны получить более подробную информацию в журналах SharePoint, которые присутствуют в папке "Журналы". Попытайтесь найти дополнительную информацию об ошибке там, это поможет во многих случаях.
У меня была такая же проблема со списком, определенным в schema.xml. Я исправил его, указав тот же путь как в поле def, так и в файле schema.xml.
Имя списка тоже не работает для меня.
Мне пришлось создавать динамический стол списка и поиска с помощью активатора функций. Как только я создаю список поиска через объектную модель SharePoint, у вас есть Guid. Затем вы можете динамически создать столбец в списке, требующем столбец поиска, используя существующий CAML выше, с помощью следующего метода:
string xml = // your CAML up top with a TOKEN to replace List="{TOKEN}"SPList listWithLookupColumn = web
.Lists
.Add(url,description,SPListTemplateType.GenericList);Guid listId = listWithLookupColumn.ID;
xml = xml.Replace("TOKEN",listId);
// some code to find the list you want lookup column on
SPList listToAddLookupColumn = listRepository(listNameToFind);listToAddLookupColumn
.AddFieldAsXml(xml,true,SPAddFieldOptions.AddToDefaultContentType)
Список = "" должен быть уникальным GUID. Поскольку вы еще не знаете GUID, вам необходимо будет программно заменить его, когда список создан.
Вот некоторая информация о том, как это сделать: http://www.sharepointtactics.com/blog/fix-lookup-fields-created-through-features.html
- Вопросы
- Sharepoint
- Поле поиска в качестве столбца сайта через CAML