2010-07-07 123 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