2012-01-16 22 views
2

我已经定义了一个内容类型“相关链接”并设置了Inherits =“False”并添加了一行以删除开箱即用的“标题”字段因为我不希望它在视图或新/编辑/显示形式中显示,请参阅下面CAML中的(选项1)。内容类型列表中不显示字段Inherits =“False”

<?xml version="1.0" encoding="utf-8"?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 

    <!-- ===== Fields ===== --> 
    <!-- Link Category --> 
    <Field DisplayName="Link Category" 
      Name="LinkCategory" 
      ID="{654EAC00-342B-4176-9D91-613AD724F684}" 
      Group="Custom" 
      Overwrite="True" 
      Type="Lookup" 
      ShowField="Title" 
      List="Lists/LinkCategoryList" 
      WebId="~sitecollection" /> 

    <!-- ===== Content Type ===== --> 
    <!-- 
    Related Links 
    - Parent ContentType: Item (0x01) 
    --> 
    <ContentType Name="Related Links" 
       ID="0x0100c11a1db14e564574bc49a2aa9bf325d3" 
       Group="Custom" 
       Description="" 
       Inherits="False" 
       Version="0"> 
     <FieldRefs> 
      <!-- Title (OPTION 1) --> 
      <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" /> 
      <!-- (OPTION 2) 
      <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" 
         Hidden="TRUE" Required="FALSE" DisplayName="_hidden" /> 
      --> 
      <!-- Link Category --> 
      <FieldRef DisplayName="Link Category" 
         Name="LinkCategory" 
         ID="{654EAC00-342B-4176-9D91-613AD724F684}" 
         Required="True" /> 
     </FieldRefs> 
    </ContentType> 

</Elements> 

这并从内容类型中删除“标题”字段,但是当我试图将内容类型与列表关联不视图或新建/编辑/显示形式显示“LinkCategory”字段。为什么这样?

<?xml version="1.0" encoding="utf-8"?> 
<List xmlns:ows="Microsoft SharePoint" 
     Title="Related Links" 
     FolderCreation="FALSE" 
     Direction="$Resources:Direction;" 
     Url="Lists/RelatedLinksListDefinition" 
     BaseType="0" 
     EnableContentTypes="True" 
     xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <MetaData> 
     <ContentTypes> 
      <!-- Related Links --> 
      <ContentTypeRef ID="0x0100c11a1db14e564574bc49a2aa9bf325d3" /> 
     </ContentTypes> 
     <Fields> 
     </Fields> 
     <Views> 
      <View ...etc...> 
       <ViewFields> 
        <FieldRef Name="LinkCategory"></FieldRef> 
       </ViewFields> 
       <Query> 
        <OrderBy> 
         <FieldRef Name="ID"></FieldRef> 
        </OrderBy> 
       </Query> 
      </View> 
     </Views> 
     <Forms> 
      <Form Type="DisplayForm" Url="DispForm.aspx" 
        SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
      <Form Type="EditForm" Url="EditForm.aspx" 
        SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
      <Form Type="NewForm" Url="NewForm.aspx" 
        SetupPath="pages\form.aspx" WebPartZoneID="Main" /> 
     </Forms> 
    </MetaData> 
</List> 

由于各地我已经在内容类型设置继承=“真”,并在内容类型CAML使用(OPTION 2)和隐藏的“标题”字段,但真的想了解什么是工作去这里,最好的方法是什么。提前致谢!

PS:这篇文章有类似的问题:SharePoint 2010: RemoveFieldRef and Inherits="TRUE"

PSS:当我通过SP经理2010浏览使用选项1部署后,我得到如下:

  • '链接类别' 字段正确创建
  • “相关链接”与“连接类别”字段正确创建内容类型
  • “相关链接”列表与“相关链接”相关的内容类型创建
  • 但是“相关链接”列表没有提及“链接类别”字段。

回答

1

好了,所以对我的方式沿着花园小径......

为什么“链接类别”字段没有被在“相关链接”列表上的创建是不相关的设置继承问题= “False”,这是因为我没有在列表模式中定义它,即使我已经在内容类型中定义了它。这里提到:

http://msdn.microsoft.com/en-us/library/aa543576.aspx

当SharePoint基金会创建一个列表实例,它仅包括 那些在列表模式列表或 的基本类型模式中声明的那些列。如果您在列表 架构中引用了站点内容类型,并且该内容类型引用了列表的基本类型架构或列表架构中包含的不是 的站点列,则不包括这些列。您必须在 列表架构中为SharePoint Foundation声明这些列以将其包含在列表中。

在这里:

http://stefan-stanev-sharepoint-blog.blogspot.com/2010/03/contenttypebinding-vs-contenttyperef.html

它一个丑陋的事情是,你指定要 连接到列表中基于该列表定义,但框架 没有按网站内容类型如果内容类型中的字段在列表中缺少 - 因此您需要在列表模式文件的Fields元素中手动添加所有内容类型的字段 。其实,这就是我所谓的 领域重新定义问题......

所以重复字段从内容类型定义以下元素列表架构:

<Fields> 
     <Field DisplayName="Link Category" 
       Name="LinkCategory" 
       ID="{654EAC00-342B-4176-9D91-613AD724F684}" 
       Group="Custom" 
       Overwrite="True" 
       Type="Lookup" 
       ShowField="Title" 
       List="Lists/LinkCategoryList" 
       WedId="~sitecollection" /> 
    </Fields> 

我可以证实,使用继承=”假“& <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />会删除标题字段。

对于那些绊倒这篇文章的人来说,这里有另一个关于Inherits =“False”的好链接。

https://sharepoint.stackexchange.com/questions/2995/mysteries-of-the-contenttype-inherits-attribute

+0

将此问题标记为答案!非常感谢! – HW90 2012-05-30 06:27:24

相关问题