К сожалению, документацию по XML немного сложно найти.Вот краткий обзор того, что я узнал до сих пор, работая с SPFx:
Поля
Давайте начнем с создания некоторых полей.Если вы хотите создать список SharePoint, поля будут представлять столбцы списка.Основная схема поля выглядит следующим образом (обратите внимание, что номера с 1 по 5 предназначены только для справочных целей и должны , а не быть включены в любой окончательный код):
<Field
1 ID="{DAFF97CE-C27D-4D27-9863-4422526CC395}"
2 Name="EmployeeName"
3 DisplayName="Name"
4 Description="Column for the employee's first name."
5 Type="Text"
/>
ID: GUID ( G в общем U nique ID entifier) для поля.Вам нужно сгенерировать один.Используйте онлайн-генератор, такой как , этот - убедитесь, что он в верхнем регистре, с дефисами и фигурными скобками (ссылка) .Visual Studio имеет встроенный генератор, если вы его используете.
Имя: Внутреннее имя для поля.Это имя, которое существует "под капотом".Если вы будете взаимодействовать с полем программным способом, это имя, которое вы будете использовать.
DisplayName: Отображаемое имя для поля.Это имя, которое отображается в SharePoint.Обычно это только для презентаций.
Описание: Текстовое описание поля.Полезно для запоминания, для чего предназначено поле, но не важно в противном случае.
Тип: Это важное поле.Он определяет , какой тип столбца вы будете создавать .Как вы, вероятно, видели при создании столбцов в веб-интерфейсе SharePoint, существует много разных типов, таких как «Одна строка текста», «Дата и время», «Человек или группа», «Рассчитано» и т. Д.Атрибут типа напрямую сопоставляется с этими разрешенными вариантами.
Типы
Сложная часть заключается в определении допустимых значений для Тип .К счастью, они задокументированы в спецификации элемента Field .Прокрутите вниз до строки Тип.
Просмотрите документацию на предмет наличия других обязательных или дополнительных атрибутов на основе выбранного вами Типа.Например, для типа Number у вас могут быть дополнительные атрибуты Десятичные числа , Min и Max .Ниже мы можем указать, что для параметра «Количество дней» вы можете выбрать только целое число, не занимать менее 1 дня и не более 30 дней.
<Field
ID="{B34A7173-5AB7-4ABC-812B-EF8D0386498F}"
Name="NumberOfDays"
DisplayName="Number of Days"
Description="The number of days employee will take off."
Type="Number"
Decimals="0"
Min="1"
Max="30"
/>
Список полей и сайтПоля
После создания полей у вас есть выбор: Должны ли эти поля быть столбцами списка или столбцами сайта?
- Введенные поляв
schema.xml
станет список столбцов;другими словами, ограничено этим списком. - Поля, введенные в
elements.xml
, станут столбцами сайта.
Помните об этом выборе и сохраняйте определения полей, которые вы создали,Мы вернемся к ним.
Списки
Теперь давайте создадим схему списка.Вам не нужно (и не следует) создавать эту вещь с нуля - посмотрите и скопируйте приведенный ниже шаблон в ваше решение (опять же, цифры слева только для справочных целей):
<List xmlns:ows="Microsoft SharePoint"
1 BaseType="0"
Direction="$Resources:Direction;"
xmlns="http://schemas.microsoft.com/sharepoint/">
<MetaData>
<ContentTypes />
2 <Fields></Fields>
<Views>
<View BaseViewID="1"
Type="HTML"
WebPartZoneID="Main"
DisplayName="$Resources:core,objectiv_schema_mwsidcamlidC24;"
DefaultView="TRUE"
MobileView="TRUE"
MobileDefaultView="TRUE"
SetupPath="pages\viewpage.aspx"
ImageUrl="/_layouts/images/dlicon.png"
Url="AllItems.aspx">
<XslLink Default="TRUE">main.xsl</XslLink>
<JSLink>clienttemplates.js</JSLink>
<RowLimit Paged="TRUE">30</RowLimit>
<Toolbar Type="Standard" />
3 <ViewFields>
<FieldRef Name="<FIELD_1>" />
<FieldRef Name="<FIELD_2>" />
<FieldRef Name="<FIELD_3>" />
</ViewFields>
<Query>
<OrderBy>
<FieldRef Name="ID" />
</OrderBy>
</Query>
</View>
</Views>
<Forms>
<Form Type="DisplayForm"
Url="DispForm.aspx"
SetupPath="pages\form.aspx"
WebPartZoneID="Main" />
<Form Type="EditForm"
Url="EditForm.aspx"
SetupPath="pages\form.aspx"
WebPartZoneID="Main" />
<Form Type="NewForm"
Url="NewForm.aspx"
SetupPath="pages\form.aspx"
WebPartZoneID="Main" />
</Forms>
</MetaData>
</List>
BaseType: Представляет тип списка, который вы хотите создать. Сведения о допустимых значениях см. В этой документации. Общий список (тип, который вы создадите, если нажмете «Добавить настраиваемый список» или «Создать список» в веб-интерфейсе SharePoint), будет 0 и, вероятно, является наиболее распространенным,Другим распространенным вариантом является библиотека документов, которая будет 1.
Поля: Если вы решили создать свои поля как Столбцы списка ,это то место, куда вы вставляете определения полей.Добавленные здесь определения полей будут автоматически создаваться в списке при его создании.(Если вам нужны столбцы сайта, оставьте Fields
как есть и сохраните определения полей для дальнейшего использования.)
<!-- ... -->
<ContentTypes />
<Fields>
<Field
ID="{DAFF97CE-C27D-4D27-9863-4422526CC395}"
Name="EmployeeName"
DisplayName="Name"
Description="Column for the employee's first name."
Type="Text"
/>
<Field
ID="{AA4D083E-1B32-4AF5-B572-DA06B3996A94}"
Name="EmployeeSurname"
DisplayName="Surname"
Description="Column for the employee's surname."
Type="Text"
/>
</Fields>
<Views>
<!-- ... -->
ViewFields: ViewFields определяет столбцы, которые будут видны в представлении, с которым он связан.(Игра с представлениями - более сложная тема для другого поста.) Пока убедитесь, что у вас есть
FieldRef
для каждого поля, которое вы добавляете в свой список.Обязательно укажите
Внутреннее имя каждого поля.(Делайте это всегда, независимо от того, хотите ли вы столбцы списка или столбцы сайта.)
<!-- ... -->
<Toolbar Type="Standard" />
<ViewFields>
<FieldRef Name="EmployeeName" />
<FieldRef Name="EmployeeSurname" />
</ViewFields>
<Query>
<!-- ... -->
Теперь у вас есть схема списка, которая определяет все, что вам нужно знать о списке.
Примечание: Если вам нужно несколько разных списков, вы должны создать несколько файлов схемы списков.Просто скопируйте и вставьте шаблонную схему и добавьте модификации так же, как описано выше.
Элементы
Наконец, давайте свяжем все вместе.elements.xml
- это место, где вы указываете SPFx каждый элемент, который вы хотите подготовить.
Чтобы создать список, вам нужен элемент ListInstance
. Вот документация. Ниже приведен пример файла elements.xml
(еще раз, цифры слева только для справки):
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ListInstance
1 CustomSchema="schema-employees.xml"
2 Description="List for employee name and surname."
3 FeatureId="00bfea71-de22-43b2-a848-c05709900100"
4 TemplateType="100"
5 Title="Employee Names"
6 Url="Lists/EmployeeNames"
/>
</Elements>
CustomSchema: Имя файла схемы списка, над которым мы работали ранее.В данном случае я назвал его schema-employees.xml
- вы можете назвать его как угодно, просто убедитесь, что имена совпадают.
Описание: Текстовое описаниесписок.Не слишком важно.
FeatureId: Напомним, что ранее в схеме списка мы решили, что создаем пользовательский список с BaseType="0"
.Пользовательский список имеет соответствующий идентификатор функции, который должен соответствовать типу созданного списка. См. Здесь список идентификаторов функций. Найдите имя функции для CustomList
, чтобы проверить, совпадают ли идентификаторы функций.Если бы вы предоставляли другой вид списка, например, библиотеку документов, вам пришлось бы прийти сюда, чтобы найти соответствующий FeatureId
.
Тип шаблона: Это еще одна часть, которая должна соответствовать типу создаваемого списка. См. Здесь список типов шаблонов. В этом случае обратите внимание, что GenericList
соответствует TemplateType
из 100
.Библиотека документов будет иметь вид 101
и т. Д.
Заголовок: Видимый заголовок списка, который будет отображаться в содержании сайта.Не слишком важно.
Url: Здесь указывается URL-адрес, по которому вы найдете этот список.Обычно, как вы могли заметить при создании списков с помощью веб-интерфейса SharePoint, пользовательские списки размещаются в /sites/YOUR_SITE/Lists/
.Приведенный выше пример следует этому соглашению, но вы также можете установить URL для других значений.
Это все для ListInstance
.Кроме того, если вы решили реализовать свои поля как Столбцы сайта , elements.xml
- это то место, куда вы должны вставить определения полей.Просто убедитесь, что вы вставили Field
перед ListInstance
, потому что в противном случае SharePoint не будет знать, на какие поля вы ссылаетесь (они еще не были бы созданы!).
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field
ID="{DAFF97CE-C27D-4D27-9863-4422526CC395}"
Name="EmployeeName"
DisplayName="Name"
Description="Column for the employee's first name."
Type="Text"
/>
<Field
ID="{AA4D083E-1B32-4AF5-B572-DA06B3996A94}"
Name="EmployeeSurname"
DisplayName="Surname"
Description="Column for the employee's surname."
Type="Text"
/>
<ListInstance
CustomSchema="schema-employees.xml"
Description="List for employee name and surname."
FeatureId="00bfea71-de22-43b2-a848-c05709900100"
TemplateType="100"
Title="Employee Names"
Url="Lists/EmployeeNames"
/>
</Elements>
Указавelements.xml
, мы успешно создали определение XML для списков, которые мы хотим создать!
Заключительное примечание
Не забудьте об этом, чтобы SPFx знал о schema-employees.xml
и elements.xml
, вы должны включить их как часть определения компонента в package-solution.json
.Об этом говорится в учебнике, связанном с исходным вопросом , но я все равно хотел это отметить.