2010-07-07 37 views
14

我曾经阅读过,在SharePoint中创建新的ContentType时,更改Title列的显示名称并不明智。然而,它是可能的(即列静态名称仍然是“标题”,但显示名称是“描述”)。更改ContentType中标题列的显示名称,是否明智?

所以我的问题是,什么是可能出现的并发症?为什么我不改变它,当我创建一个需要“描述”列但没有“标题”列的新ContentType时?

回答

18

我同意你需要与CAML XML做到这一点。我只想发布如何做的实际细节,以便下一个有这个问题的人不必像我一样继续搜索。感谢Lambros's Blog的答案。

实际上,你需要更新三个字段 - 标题字段,并在此基础上两个计算字段,你需要使用预定义的SharePoint ID值。请参阅下面或上面的链接:

您需要通过添加添加到FieldRefs如下:

<FieldRef Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Renamed" Sealed="TRUE"/> 
<FieldRef Name="LinkTitleNoMenu" ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" DisplayName="Renamed" Sealed="TRUE"/> 
<FieldRef Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Renamed" Sealed="TRUE"/> 

您需要通过添加添加到各字段的内容:

<Field Name="LinkTitle" ID="{82642ec8-ef9b-478f-acf9-31f7d45fbc31}" DisplayName="Renamed" Sealed="TRUE" Type="Calculated"/> 
<Field Name="LinkTitleNoMenu" ID="{bc91a437-52e7-49e1-8c4e-4698904b2b6d}" DisplayName="Renamed" Sealed="TRUE" Type="Calculated"/> 
<Field Name="Title" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" DisplayName="Renamed" Sealed="TRUE" Type="Text"/> 

那应该这样做。再次感谢Lambros。

+2

这会重命名引用此字段或整个网站的特定内容类型的字段吗? +1。 – 2013-02-05 10:14:09

2

我不知道有任何问题。我自己多次完成这个任务,并没有遇到任何问题。

+1

同意Rob,我从来没有遇到过问题 - 我也使用内容类型中的RemoveFieldRef指令从内容类型继承来删除它。 – Shaneo 2010-07-07 14:49:07

+0

我同意。 FieldRef和RemoveFieldRef不应该导致任何问题。我听说,如果你改变Fieldname本身,它可能会导致问题,你不能改回它,因为旧名称是“保留”,也许这就是你读到的? – Hinek 2010-07-07 15:02:06

8

如果您正在开发自己的内容类型为XML的文件在溶液中的功能,那么就没有问题,更改标题栏的显示名称。

问题是,当用户尝试做到这一点通过UI。

  1. 他们去站点设置/内容类型
  2. 打开内容类型和点击标题栏
  3. 将名称更改为东西好看

在他们改变那是什么情况标题网站栏的显示名称。一旦他们发现它更改了所有列表中的标题列,他们会尝试将其更改回来,但这由聪明的SharePoint用户界面阻止,因为标题是保留名称。

+1

好的,现在我明白了。我想在Visual Studio中创建我的内容类型为xml,所以我保存了。谢谢。 – Turrau 2010-07-08 15:53:52

5

我有你的“什么是可能发生的并发症”问题的第一手经验,所以让我给你,我只是碰到了这是造成我很多痛苦今早的具体例子。

你不小心改变了站点的列名(认为你只是影响了一个特定的列表),但后来意识到你已经改变了父项站点列,并且检查了适用于所有继承内容的漂亮盒子类型。 (我觉得这是公牛鞭打自己...呃)。

因此,所有的名单都受到影响,当然。但是等等,这里会有更多的痛苦。内部SharePoint人员列表(称为“用户信息列表”)也受到影响,您无法将其更改回原始的“名称”列标题。当你试图通过Microsoft Access连接到SharePoint列表的时候,你会发现这是真的,你可以通过硬编码查找用户信息列表,专门查找名为“Name”的列。因此,它打破了这些链接列表,使它们无法通过MS Access。

我现在正在研究一种通过其他方法重新命名它的方法,因为UI阻止您将列命名回“名称”。

所以,要回答你的问题:不要这样做!

+0

正如您所写,您已更改父内容类型的标题网站列的显示名称(我认为它是网站集的根网站上的项目内容类型)。当然这会对您的网站收藏产生影响。但是,改变内容类型(DisplayLink属性的FieldLink)的Title列的显示名称并不包含从其中继承的数十种其他内容类型(例如绑定到列表的内容类型),这通常很常见。您可以通过PowerShell中的$ web.SiteUserInfoList来评估隐藏的用户列表,并从代码中将其改回。 – pholpar 2017-05-26 08:12:18

相关问题