2009-12-01 127 views
3

我已经为列表编写了一个模式,只需将一列添加到默认自定义列表中,该列表是一个名为months的数字字段。该字段显示在默认视图中,并确实在列表中创建。该列表使用可自行设置的值进行自动填充。问题在于该字段未显示在显示/编辑/新页面上。它可以通过数据表视图进行设置。我不明白为什么当我在架构中专门设置它时没有显示出来。未显示在显示/编辑/新页面中的SharePoint字段

会非常appriciate任何建议。

<?xml version="1.0" encoding="utf-8"?> 
<List xmlns:ows="Microsoft SharePoint" 
     Title="ReviewPeriods" 
     FolderCreation="FALSE" 
     Direction="$Resources:Direction;" 
     Url="Lists/ReviewPeriods" 
     EnableContentTypes="TRUE" 
     BaseType="0"> 
<MetaData> 
    <ContentTypes> 
    <ContentTypeRef ID="0x01"> 
     <Folder TargetName="Item" /> 
     </ContentTypeRef> 
    </ContentTypes> 
    <Fields> 
    <Field ID="{B99EB797-4057-4a75-90BF-B40D0F89A9D9}" 
      Type="Number" 
      Decimals="0" 
      Min="0" 
      Max="100" 
      Percentage="FALSE" 
      Name="Months" 
      Required="TRUE" 
      Group="SEED" 
      DisplayName="Months" 
      StaticName="Months" 
      ShowInDisplayForm="TRUE" 
      ShowInEditForm="TRUE" 
      ShowInNewForm="TRUE"> 
    </Field> 
    </Fields> 
    <Views> 
    <View BaseViewID="0" 
      Type="HTML" 
      WebPartZoneID="Main" 
      DisplayName="Default View" 
      DefaultView="TRUE" 
      SetupPath="pages\viewpage.aspx" 
      ImageUrl="/_layouts/images/generic.png" 
      Url="AllItems.aspx"> 

...隐藏的东西...

<ViewFields> 
      <FieldRef Name="LinkTitle"></FieldRef> 
      <FieldRef Name="Months"></FieldRef> 
    </ViewFields> 
    <Query> 
    <OrderBy> 
     <FieldRef Name="Title"> 
     </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> 

回答

4

问题是您将该字段添加到列表中,但同时启用内容类型并指定要使用的唯一内容类型是不包含该字段的Item(0x01)。所以你要添加/编辑项目,然后你不会得到该领域。

解决办法有两个:

  1. 不启用内容类型(然后 也删除整个 <CONTENTTYPES>部分)
  2. 创建一个新的内容类型,包括 领域,并补充说,内容类型 而不是项目
+0

我已经走了你列出虽然我感兴趣的是第二个解决方案第一。实际上是否可以彻底禁用列表中的内容类型,还是只是隐藏起来。 – 2009-12-02 12:41:03

+0

如果你忽略了EnableContentTypes属性和部分,那么你会得到一个列表,其中添加的字段显示在项目的添加/编辑上 – 2009-12-02 16:51:21

1

我有点找到了解决我自己的问题。该字段未在新建/显示/编辑表单中列出,因为这些页面基于内容类型。在这种情况下,我将我的列表作为基础的项目内容类型。

通常我会创建自己的内容类型,但我一直在试图找到一种简写的方式来创建一个列表,而不需要定义一个全新的内容类型。所以我所做的是直接在列表模式中定义字段,而不是引用内容类型中已有的字段。定义内容类型似乎有点愚蠢,只适用于只有一个额外字段的单用途查找列表。

如果有人可以建议一种方法让字段显示在新建/显示/编辑表单上而不必创建新的内容类型,那么我会乐意让它们成为接受的答案。

1

正如您所做的那样,我在做同样的事情(创建内容类型fo r我想创建的每个列表) 直到我点击下面的代码。如果您看下面的代码,我已经删除了<ContentTypes>标签并强制添加了标题字段和附加字段说明。

<Fields> 
    <Field ID="{9830F5FC-99E0-4052-9CC0-50CBEDE80002}" Type="Text" Name="Title" DisplayName="Type Name" Required="TRUE" MaxLength="255" Version="1" RowOrdinal="0"> 
    <Default/> 
    </Field>  
    <Field Type="Note" DisplayName="Description" Required="FALSE" NumLines="6" RichText="TRUE" RichTextMode="Compatible" Sortable="FALSE" 
     ID="{63C25492-BA98-4096-A6D7-F85885E0A425}" Name="Description" 
      RowOrdinal="0"/> 
</Fields> 

......隐藏

<MetaData>

每回答是正确+1

相关问题