更改ContentType中Title列的显示名称,不管是否明智?

Tur*_*rau 14 sharepoint

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

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

小智 18

我同意您需要使用CAML XML执行此操作.我只是想发布如何做的实际细节,以便下一个有这个问题的人不必像我那样继续搜索.感谢Lambros的博客提供答案.

实际上,您需要更新三个字段 - 标题字段和基于它的两个计算字段,您需要使用预定义的SharePoint ID值.见下文或上面的链接:

您需要通过添加以下内容添加到FieldRef:

<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"/>
Run Code Online (Sandbox Code Playgroud)

您需要通过添加以下内容添加到字段:

<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"/>
Run Code Online (Sandbox Code Playgroud)

应该这样做.再次感谢Lambros.

  • 这会为引用此字段或整个网站的特定内容类型重命名字段吗?+1. (2认同)

Per*_*sen 8

如果您在解决方案的功能中将自己的内容类型开发为xml文件,则更改标题列的显示名称没有问题.

问题是当用户尝试通过UI进行操作时.

  1. 他们转到网站设置/内容类型
  2. 打开内容类型,然后单击标题列
  3. 将名称更改为好的名称

在这种情况下,他们正在改变的是标题站点列的显示名称.一旦他们发现它改变了所有列表中的标题列,他们就会尝试将其更改回来,但这可以通过聪明的SharePoint UI来阻止,因为标题是保留名称.


Jim*_*ker 5

我对你的"可能出现的并发症有什么问题"有第一手的经验,所以让我给你一个特定的例子,我刚遇到这个例子,这让我今天早上痛苦不堪.

您无意中更改了站点列名称(认为您只影响特定列表),但后来意识到您已更改父项目站点列,并检查了应用于所有继承内容类型的漂亮框.(我觉得自己就是为了鞭打自己...呃).

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

我正在研究一种通过其他方法重命名它的方法,因为UI会阻止您将列命名为"Name".

那么,回答你的问题:不要这样做!