Как разработать список в sharepoint онлайн по коду - PullRequest
0 голосов
/ 29 января 2019

Мы хотим создать списки в нашем клиенте на сайте разработчика.Мы хотим разработать его на нашем сайте для разработчиков, а затем развернуть на стороне клиента с помощью пакета (возможно, 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 мы создали веб-часть и в коде создали 2 списка в elemnts.xml и schema.xml.Чем у нас были проблемы с некоторыми идентификаторами типов контента.Поэтому наша задача - создать список по коду.Кто-нибудь может дать нам совет, что и как является лучшим вариантом для разработки этих списков?

И т. Д. Это два простых списка

Имя сотрудника, верное имя Vacation -employee, numberOfDays

Ответы [ 2 ]

0 голосов
/ 30 января 2019

большое спасибо за прекрасную информацию, это то, что мы ищем!Вы рекомендуете скопировать и вставить определение списка в VS (или другую IDE).Я хотел бы спросить вас, есть ли какой-нибудь способ для создания списков с персоналом, поиском, вычислениями и другими «продвинутыми» столбцами и загрузкой определения схемы XML для копирования и вставки в VS, потому что мне нужно решение для конечного пакета для sppkg?Это потому, что я нахожу этот способ намного быстрее, чем код все в VS.Спасибо.

0 голосов
/ 29 января 2019

К сожалению, документацию по 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" 
/>
  1. ID: GUID ( G в общем U nique ID entifier) ​​для поля.Вам нужно сгенерировать один.Используйте онлайн-генератор, такой как , этот - убедитесь, что он в верхнем регистре, с дефисами и фигурными скобками (ссылка) .Visual Studio имеет встроенный генератор, если вы его используете.

  2. Имя: Внутреннее имя для поля.Это имя, которое существует "под капотом".Если вы будете взаимодействовать с полем программным способом, это имя, которое вы будете использовать.

  3. DisplayName: Отображаемое имя для поля.Это имя, которое отображается в SharePoint.Обычно это только для презентаций.

  4. Описание: Текстовое описание поля.Полезно для запоминания, для чего предназначено поле, но не важно в противном случае.

  5. Тип: Это важное поле.Он определяет , какой тип столбца вы будете создавать .Как вы, вероятно, видели при создании столбцов в веб-интерфейсе 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>
  1. BaseType: Представляет тип списка, который вы хотите создать. Сведения о допустимых значениях см. В этой документации. Общий список (тип, который вы создадите, если нажмете «Добавить настраиваемый список» или «Создать список» в веб-интерфейсе SharePoint), будет 0 и, вероятно, является наиболее распространенным,Другим распространенным вариантом является библиотека документов, которая будет 1.

  2. Поля: Если вы решили создать свои поля как Столбцы списка ,это то место, куда вы вставляете определения полей.Добавленные здесь определения полей будут автоматически создаваться в списке при его создании.(Если вам нужны столбцы сайта, оставьте 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>
  1. CustomSchema: Имя файла схемы списка, над которым мы работали ранее.В данном случае я назвал его schema-employees.xml - вы можете назвать его как угодно, просто убедитесь, что имена совпадают.

  2. Описание: Текстовое описаниесписок.Не слишком важно.

  3. FeatureId: Напомним, что ранее в схеме списка мы решили, что создаем пользовательский список с BaseType="0".Пользовательский список имеет соответствующий идентификатор функции, который должен соответствовать типу созданного списка. См. Здесь список идентификаторов функций. Найдите имя функции для CustomList, чтобы проверить, совпадают ли идентификаторы функций.Если бы вы предоставляли другой вид списка, например, библиотеку документов, вам пришлось бы прийти сюда, чтобы найти соответствующий FeatureId.

  4. Тип шаблона: Это еще одна часть, которая должна соответствовать типу создаваемого списка. См. Здесь список типов шаблонов. В этом случае обратите внимание, что GenericList соответствует TemplateType из 100.Библиотека документов будет иметь вид 101 и т. Д.

  5. Заголовок: Видимый заголовок списка, который будет отображаться в содержании сайта.Не слишком важно.

  6. 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.Об этом говорится в учебнике, связанном с исходным вопросом , но я все равно хотел это отметить.

...