Как разработать список в sharepoint онлайн по коду
Мы хотим создать списки в нашем арендаторе на сайте разработчика. Мы хотим разработать его на нашем сайте для разработчиков, а затем развернуть на стороне клиента с помощью пакета (возможно, sppkg).
Мы попытались создать списки в Visual Studio 2017 с помощью надстройки Sharepoint и в коде Visual Studio с помощью инфраструктуры SPFX с учебными пособиями на основе ссылки на документацию по Microsoft spfx - https://docs.microsoft.com/en-us/sharepoint/dev/spfx/web-parts/get-started/provision-sp-assets-from-package.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Field ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}"
Name="SPFxAmount"
DisplayName="Amount"
Type="Currency"
Decimals="2"
Min="0"
Required="FALSE"
Group="SPFx Columns" />
<Field ID="{943E7530-5E2B-4C02-8259-CCD93A9ECB18}"
Name="SPFxCostCenter"
DisplayName="Cost Center"
Type="Choice"
Required="FALSE"
Group="SPFx Columns">
<CHOICES>
<CHOICE>Administration</CHOICE>
<CHOICE>Information</CHOICE>
<CHOICE>Facilities</CHOICE>
<CHOICE>Operations</CHOICE>
<CHOICE>Sales</CHOICE>
<CHOICE>Marketing</CHOICE>
</CHOICES>
</Field>
<ContentType ID="0x010042D0C1C200A14B6887742B6344675C8B"
Name="Cost Center"
Group="SPFx Content Types"
Description="Sample content types from web part solution">
<FieldRefs>
<FieldRef ID="{060E50AC-E9C1-4D3C-B1F9-DE0BCAC300F6}" />
<FieldRef ID="{943E7530-5E2B-4C02-8259-CCD93A9ECB18}" />
</FieldRefs>
</ContentType>
<ListInstance
CustomSchema="schema.xml"
FeatureId="00bfea71-de22-43b2-a848-c05709900100"
Title="SPFx List"
Description="SPFx List"
TemplateType="100"
Url="Lists/SPFxList">
</ListInstance>
</Elements>
С помощью SPFX мы создали webpart и в коде создали 2 списка в elemnts.xml и schema.xml. Чем у нас были проблемы с некоторыми идентификаторами типов контента. Поэтому наша задача - создать список по коду. Кто-нибудь может дать нам совет, что и как является лучшим вариантом для разработки этих списков?
И т.д. это два простых списка
Имя сотрудника, верное имя Отпуск -работник, numberOfDays
2 ответа
К сожалению, документацию по 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 (общий идентификатор уникального идентификатора) для поля. Вам нужно сгенерировать один. Используйте онлайн-генератор, такой как этот, - убедитесь, что он в верхнем регистре, с дефисами и фигурными скобками (ссылка). Visual Studio имеет встроенный генератор, если вы его используете.
Имя: внутреннее имя поля. Это имя, которое существует "под капотом". Если вы взаимодействуете с Полем программно, это имя, которое вы бы использовали.
DisplayName: отображаемое имя для поля. Это имя, которое отображается в SharePoint. Обычно это только для презентаций.
Описание: текстовое описание поля. Полезно для запоминания, для чего предназначено поле, но не важно в противном случае.
Тип: это важный. Он определяет, какой тип столбца вы будете создавать. Как вы, вероятно, видели при создании столбцов в веб-интерфейсе SharePoint, существует много разных типов, таких как "Одна строка текста", "Дата и время", "Человек или группа", "Рассчитано" и т. Д. Атрибут типа напрямую сопоставляется с этими разрешенными вариантами.
Типы
Сложной частью является выяснение допустимых значений для Type. К счастью, они задокументированы в спецификации элемента Field. Прокрутите вниз до строки Тип.
Изучите документацию на предмет наличия других обязательных или дополнительных атрибутов на основе выбранного вами типа. Например, для типа Number у вас могут быть дополнительные атрибуты Decimals, 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
, Об этом говорится в учебнике, связанном с оригинальным вопросом, но я все равно хотел это отметить.
Большое спасибо за прекрасную информацию, это то, что мы ищем! Вы рекомендуете скопировать и вставить определение списка в VS (или другую IDE). Я хотел бы спросить вас, есть ли какой-нибудь способ для создания списков с персоналом, поиском, вычислениями и другими "продвинутыми" столбцами и загрузкой определения схемы XML для копирования и вставки в VS, потому что мне нужно решение для конечного пакета для sppkg? Это потому, что я нахожу этот способ намного быстрее, чем код все в VS. Спасибо.