我创建了一个继承自 OOTB SharePoint 的自定义内容类型Picture内容类型。我所做的唯一自定义是添加一个简单的 URL 字段,并删除基本类型上的两个字段。见下文:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<!-- Parent ContentType: Picture (0x010102) -->
<ContentType ID="0x0101020027f16ab27e6e45a6848c25c47aaa7053"
Name="Custom Picture"
Description=""
Group="Custom"
Inherits="TRUE"
Version="0">
<FieldRefs>
<RemoveFieldRef ID="{b66e9b50-a28e-469b-b1a0-af0e45486874}" Name="Keywords" />
<RemoveFieldRef ID="{a5d2f824-bc53-422e-87fd-765939d863a5}" Name="ImageCreateDate" />
<FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" DisplayName="URL" Required="FALSE" />
</FieldRefs>
</ContentType>
</Elements>
如果我根据自定义内容类型创建图片库,我添加的“URL”字段会出现在新建/编辑表单中,但是也会显示我尝试删除的两个字段,即RemoveFieldRef 被忽略。如果我查看内容类型“站点设置 -> 内容类型库”,这两个字段仍然列在那里。
Setting 继承=“假”在我的自定义内容类型上(参见MSDN定义 http://msdn.microsoft.com/en-us/library/aa544268.aspx) 成功删除只是这两个字段来自“站点设置 -> 内容类型库”页面,但是然后none基本字段显示在新/编辑表单中——仅显示我的自定义“URL”字段。
我该如何确保基本“图片”内容类型中的所有字段都显示在图片库的新建/编辑表单上(除了我专门删除的两个字段之外)?
我认为这个问题的本质是对内容类型继承如何工作的理解。
来自 MSDN(http://msdn.microsoft.com/en-us/library/aa544268.aspx http://msdn.microsoft.com/en-us/library/aa544268.aspx)
如果 Inherits 为 TRUE,则子内容类型将继承父内容类型中的所有字段,包括用户添加的字段。
如果 Inherits 为 FALSE 或不存在,并且父内容类型是内置类型,则子 >内容类型仅继承安装 >SharePoint Foundation 时父内容类型中的字段。子内容类型没有用户添加到父内容类型的任何字段。
如果 Inherits 为 FALSE 或不存在,并且父内容类型是由沙盒解决方案配置的,则子项不会从父项继承任何字段。
我认为上面的关键词是“如果 Inherits 为 TRUE,则子内容类型将继承父级中的所有字段,包括用户添加的字段。”
这意味着,为了完成您打算做的事情,您将继承设置为 false,并且您必须包含您希望在内容类型中使用的所有字段的 FieldRef 元素。
您没有提及/不包含有关如何将内容类型添加到列表实例的代码。确保已更新以支持删除继承或将继承设置为 false。
这些站点支持此处描述的内容。
-
http://kvdlinden.blogspot.com/2011/06/issues-with-removefieldref-and.html http://kvdlinden.blogspot.com/2011/06/issues-with-removefieldref-and.html
-
http://nelsonlamprecht.wordpress.com/2010/08/25/sharepoint-2010-removefieldref-and-inherits%E2%80%9Dtrue%E2%80%9D/ http://nelsonlamprecht.wordpress.com/2010/08/25/sharepoint-2010-removefieldref-and-inherits%E2%80%9Dtrue%E2%80%9D/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)