SharePoint-以编程方式将“添加到所有内容类型”设置为false

时间:2019-01-08 07:47:34

标签: sharepoint-2013

在将现有网站列添加到SharePoint列表时,我们可以选择是否将列添加到所有内容类型。

我试图取消选中此属性,并且site列被添加到本地库中(即,未在任何内容类型中使用)。

从网站栏添加栏

Screen Shot

列列表

Screen Shot

如何以编程方式实现它?目前,我正在使用下面的代码,该代码始终将列添加到默认内容类型。

我不希望将列添加到任何内容类型。

if (!list.Fields.ContainsField(reportField.ToString()))
{
    list.Fields.Add(reportField);
    list.Update();
}

2 个答案:

答案 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