2010-05-03 58 views
6

我正在嘗試將自定義內容類型從一個網站複製到另一個網站。我搜索了一下,發現了一些使用FieldLinks和Fields的例子。我很遺憾要使用哪一個,因爲當我從我的源網站獲取FieldLinks時,我會得到3個字段;而從字段檢索只返回我2字段...自定義字段丟失。我敢肯定,自從我通過界面完成後,我已經在適當的級別添加了字段。但是,當使用代碼檢索它時,這些數字不會加起來。Sharepoint中的字段鏈接和字段之間的區別

所以,除了那個奇怪的問題,我想知道FieldLinks和Fields之間有什麼區別,並且在Content Types(以編程方式)處理它們時應該使用哪一個?

謝謝。

回答

10

SPFields本身是字段,而SPFieldLinks是對這些字段的引用。 This is a good read that will explain things in detail。在一般實踐中,在處理實際內容類型定義時使用SPFieldLinks更爲安全。不過,我會在這裏快速總結一下。

列表和網頁包含實際字段和字段數據。另一方面,內容類型僅保留字段參考,它只是指向列表或網頁中的相應字段。這有點令人困惑,因爲內容類型同時包含SPFieldLinkCollection和SPFieldCollection。

SPFieldLinkCollection用於內容類型的實際定義,並且是您在將內容類型從一個網站複製到另一個網站時所要使用的內容。對於內容類型,SPFieldLink對應於XML模式中的實際元素。

比較而言,當您調用內容類型的SPFieldCollection並從中檢索字段時,實際發生的情況是內容類型正在檢查相應的字段引用,然後在列表/ web中查找以獲取實際領域。基本上,想象一下SPFieldCollection與查找的工作方式相同:如果沒有查找值和查找源,它就毫無價值。

+0

感謝您的解釋。我的情況是,當我檢查內容類型的SPFieldLinks時,我可以看到3個字段鏈接(這是正確的);但是,如果我檢查SPField,我只能看到2個字段...自定義列丟失。 – BeraCim 2010-05-04 06:38:22

+0

...和內容類型和列是通過接口添加的,而不是以編程方式添加,如果這有什麼區別的話。 – BeraCim 2010-05-04 07:32:40

+0

SP2013 doc [這裏](https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.spcontenttype.fieldlinks.aspx)(看下面的評論)強化了你的觀點,所以這仍然是-至今。 – jpaugh 2017-07-20 18:54:21

相關問題