我们想在开发人员站点上的租户中创建列表。我们希望在开发人员站点中进行开发,而不是使用软件包(也许是sppkg)在客户端进行部署。
我们尝试使用Sharepoint加载项在Visual Studio 2017中创建列表,并通过使用SPFX框架在Visual Studio代码中创建列表,以及基于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,并且在代码中,我们在elemnts.xml和schema.xml中创建了2个列表。比我们在某些内容类型ID上存在问题。因此,我们的问题是通过代码创建列表。谁能给我们建议来制定这些列表的最佳选择是什么?
这两个简单的列表
员工名称,确定名称 假期-员工,numberOfDays
答案 0 :(得分:0)
不幸的是,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 标识符)。您需要生成一个。使用在线生成器,例如this one-确保它为大写字母,连字符和大括号 (reference) 。如果您正在使用Visual Studio,则它具有内置的生成器。
名称:字段的内部名称。这是“在幕后”存在的名称。如果您通过编程方式与Field互动,那么您将使用该名称。
DisplayName::字段的显示名称。这是SharePoint中显示的名称。通常仅用于演示目的。
描述:字段的文本描述。有助于记住字段的用途,但不重要。
类型:这是重要的。它定义了您将创建哪种列。在SharePoint Web界面中创建列时,您可能已经看到,有很多不同的类型,例如“单行文本”,“日期和时间”,“人或组”,“计算所得”等。类型属性直接映射到这些允许的选择。
困难的部分是弄清 Type 的允许值是多少。值得庆幸的是,这些文件已记录在in the Field element specification中。向下滚动到“类型”行。
根据选择的类型检查文档中是否还有其他必需或可选属性。例如,对于 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"
/>
创建字段后,您可以选择进行以下操作:Should these fields be List Columns or Site Columns?
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::这表示您要创建的列表的类型。 See this documentation for the allowed values.通用列表(如果在SharePoint Web界面中单击“添加自定义列表”或“创建列表”,则将创建的类型)将为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>
<!-- ... -->
FieldRef
。确保指定每个字段的内部名称。 (无论您是要使用“列表列”还是“网站列”,都始终这样做。) <!-- ... -->
<Toolbar Type="Standard" />
<ViewFields>
<FieldRef Name="EmployeeName" />
<FieldRef Name="EmployeeSurname" />
</ViewFields>
<Query>
<!-- ... -->
现在您有了一个列表架构,该架构定义了您需要了解的有关列表的所有信息。
注意:如果需要多个不同的列表,则必须创建多个列表架构文件。只需复制并粘贴样板模式,然后以与上述相同的方式添加修改。
最后,让我们将所有内容捆绑在一起。 elements.xml
是您将要配置的每个项目告知SPFx的地方。
要创建列表,您需要一个ListInstance
元素。 Here is the documentation.下面是一个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:我们之前处理过的List Schema文件的名称。在这种情况下,我将其称为schema-employees.xml
-您可以随意命名,只要确保名称匹配即可。
描述:列表的文本描述。不太重要。
FeatureId:回想一下,在列表模式的前面,我们决定要使用BaseType="0"
创建自定义列表。自定义列表具有相应的功能ID,该功能ID 必须匹配创建的列表类型。 See here for a list of feature IDs.找到CustomList
的功能名称以再次检查功能ID是否相同。如果要提供其他类型的列表,例如文档库,则必须来到这里找到相应的FeatureId
。
模板类型:这是必须匹配创建的列表类型的另一部分。 See here for a list of template types.在这种情况下,看到GenericList
映射到TemplateType
中的100
。文档库将是101
,等等。
标题::列表的可见标题,将显示在网站的“网站内容”中。不太重要。
网址::这规定了可在其中找到此列表的Web URL。通常,您在使用SharePoint Web界面创建列表时可能已经注意到,自定义列表位于/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
中。 the tutorial linked in the original question中已解决了此问题,但无论如何我都想记下来。
答案 1 :(得分:0)
非常感谢您提供完美的信息,这是我们正在寻找的! 您建议在VS(或其他IDE)中复制和粘贴列表定义。我想问一下您是否可以通过某种方式设计人员,查找,计算和另一个“高级”列的列表,并下载XML模式定义以复制并粘贴到VS中,因为我最终需要将解决方案打包到sppkg吗?这是因为我发现这种方法比VS中的所有代码都快得多。 谢谢。