使用与DisplayName不同的Name创建列表列

时间:2016-02-18 14:04:05

标签: powershell sharepoint

使用以下PS代码创建列:

$fieldXMLString = '<Field Type="Text"
Name="MyField"
DisplayName="My Field"
StaticName="MyField"
InternalName="MyField"></Field>'
$list.Fields.AddFieldAsXml($fieldXMLString,$true,[Microsoft.SharePoint.SPAddFieldOptions]::AddFieldToDefaultView)

结果:

SchemaXmlWithResourceTokens    : <Field Type="Text" Name="My_x0020_Field" DisplayName="My Field" StaticName="MyField" InternalName="MyField" ID="{4d5e1282-6c52-450b-9f5b-2a37126a9713}" 
                             SourceID="{9b93722f-ce19-4c0b-948b-ba2a6c197539}" ColName="nvarchar11" RowOrdinal="0" />

我需要名称属性“MyField”,而不是“My_x0020_Field”。有可能吗?

1 个答案:

答案 0 :(得分:1)

确实,这是一个恼人的问题。

您将在UI中找到相同的行为。事实上,即使您手动定义“名称”,SharePoint也会使用“DisplayName”定义“名称”。

我建议更改“MyField”的DisplayName。然后将列添加到列表后,更改“我的字段”的displayName。它并不性感,但却很有效。

以下是代码:

$field= demoList.Fields.GetFieldByInternalName("MyField");
$field.Title = "My Field";
$field.PushChangesToLists = $true;
$field.Update(true);           
$list.Update();

编辑代码:)

希望这有帮助。