在将现有网站列添加到SharePoint列表时,我们可以选择是否将列添加到所有内容类型。
我试图取消选中此属性,并且site列被添加到本地库中(即,未在任何内容类型中使用)。
从网站栏添加栏
列列表
如何以编程方式实现它?目前,我正在使用下面的代码,该代码始终将列添加到默认内容类型。
我不希望将列添加到任何内容类型。
if (!list.Fields.ContainsField(reportField.ToString()))
{
list.Fields.Add(reportField);
list.Update();
}
答案 0 :(得分:0)
一种选择是使用[AddFieldAsXml] [1]方法并将AddFieldOptions
参数设置为AddToNoContentType
。请参见下面的示例:
list.Fields.AddFieldAsXml(fieldSchemaXml, false, (AddFieldOptions.AddToNoContentType));
list.Update();
如果不能选择构建字段Schema XML,则可以在添加其他字段的同时将内容类型设置为只读,然后再将其重新设置。这将阻止所有字段通过当前使用的AddField方法添加到内容类型。
答案 1 :(得分:0)
方法 AddFieldAsXml 可以将“添加到所有内容类型”设置为 false。选项 'AddToNoContentType' 应作为第三个参数添加到方法 AddFieldAsXml 中。
PowerShell 脚本示例:
$ctx=New-Object Microsoft.SharePoint.Client.ClientContext($siteUrl)
$ctx.Credentials = New-Object System.Management.Automation.PSCredential($Username, $(convertto-securestring $Password -asplaintext -force))
$fieldSchemaXml="<Field Type='Text' DisplayName='Name' Required='False' MaxLength='255' StaticName='Name' Name='Name' />"
#Add Column to the List
$List.Fields.AddFieldAsXml($fieldSchemaXml, $False, [Microsoft.SharePoint.Client.AddFieldOptions]::AddToNoContentType)
$List.Update()
$ctx.ExecuteQuery()
有关方法 AddFieldAsXml 的更多详细信息可以在以下链接的文档中找到:https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.spfieldcollection.addfieldasxml?redirectedfrom=MSDN&view=sharepoint-server。
有关所有 AddFieldOptions 的更多详细信息可以在以下链接的文档中找到:https://docs.microsoft.com/en-us/dotnet/api/microsoft.sharepoint.spaddfieldoptions?redirectedfrom=MSDN&view=sharepoint-server。