FieldLinks与Sharepoint中的字段之间的区别

时间:2010-05-03 07:47:19

标签: sharepoint sharepoint-2007 content-type

我正在尝试将自定义内容类型从一个网络复制到另一个网站。我已经google了一下,发现了一些使用FieldLinks和Fields的例子。我很遗憾要使用哪一个,因为当我从源网站获得FieldLinks时,我得到3个字段;从Fields中检索时只返回2个字段...缺少自定义字段。我非常确定我已经在适当级别添加了字段,因为我是通过界面完成的。但是当使用代码检索它时...数字只是不加起来。

除了那个奇怪的问题,我想知道FieldLinks和Fields之间的区别,以及在内容类型(以编程方式)处理它们时应该使用哪一个?

感谢。

1 个答案:

答案 0 :(得分:10)

SPFields是字段本身,而SPFieldLinks是字段的引用。 This is a good read that will explain things in detail。在一般实践中,在处理实际内容类型定义时使用SPFieldLinks更安全。不过,我会在这里给出一个快速摘要。

列表和Web包含具有字段数据的实际字段。另一方面,内容类型仅保存字段引用,字段引用仅指向列表或Web中的相应字段。这有点令人困惑,因为内容类型同时具有SPFieldLinkCollection和SPFieldCollection。

SPFieldLinkCollection用于内容类型的实际定义,是您在将内容类型从一个Web复制到另一个Web的情况下要使用的内容。 SPFieldLinks对应于XML Schema中内容类型的实际元素。

相比之下,当您调用内容类型的SPFieldCollection并从中检索字段时,实际发生的是内容类型正在检查相应的字段引用,然后在列表/ Web中查找以获取实际字段。基本上,以与查找相同的方式来考虑SPFieldCollection:如果没有查找值和查找源,它就毫无价值。