Поле поиска в качестве столбца сайта через CAML

61
2

Я пытаюсь создать поле 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>

спросил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
1
Решение
87

Обязательно добавьте это свойство при создании сайта coloumn Overwrite = "TRUE"

ответил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
75

Путь к списку в атрибуте List работает, я сделал это в своем проекте и был успешным. Одна вещь, которую я хотел, чтобы вы проверили, - это порядок этой функции. Вы выполняете функции в ручном режиме? или использовать их в onet.xml. Потому что, когда ваша функция типа контента выполняется, уже должен быть список, который нужно передать.

Также вы должны получить более подробную информацию в журналах SharePoint, которые присутствуют в папке "Журналы". Попытайтесь найти дополнительную информацию об ошибке там, это поможет во многих случаях.

ответил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
62

У меня была такая же проблема со списком, определенным в schema.xml. Я исправил его, указав тот же путь как в поле def, так и в файле schema.xml.

ответил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
63

Имя списка тоже не работает для меня.


Мне пришлось создавать динамический стол списка и поиска с помощью активатора функций. Как только я создаю список поиска через объектную модель 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)

ответил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
61

Список = "" должен быть уникальным GUID. Поскольку вы еще не знаете GUID, вам необходимо будет программно заменить его, когда список создан.


Вот некоторая информация о том, как это сделать: http://www.sharepointtactics.com/blog/fix-lookup-fields-created-through-features.html

ответил(а) 2021-01-19T18:49:57+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема