3

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

将非常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

3 回答 3

4

问题是您将字段添加到列表中,但同时启用内容类型并指定要使用的唯一内容类型是不包括该字段的 Item (0x01)。因此,您正在添加/编辑项目,然后您没有得到该字段。

有两种解决方案:

  1. 不要启用内容类型(然后还要删除整个 <ContentTypes> 部分)
  2. 创建一个包含该字段的新内容类型并添加该内容类型而不是 Item
于 2009-12-01T19:26:48.633 回答
1

我已经找到了解决我自己问题的方法。该字段不会在新建/显示/编辑表单中列出,因为这些页面基于内容类型。在这种情况下,我的列表所基于的 Item 内容类型。

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

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

于 2009-12-01T19:23:15.707 回答
1

正如你所做的那样,我正在做同样的事情(为我想要创建的每个列表创建内容类型),直到我点击下面的代码。如果你看下面的代码,我已经删除了<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

于 2009-12-02T04:34:37.033 回答