代码之家  ›  专栏  ›  技术社区  ›  Daniel Revell

SharePoint字段未显示在显示/编辑/新建网页中

  •  3
  • Daniel Revell  · 技术社区  · 16 年前

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

    任何建议都会很贴切。

    <?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>
    
    3 回复  |  直到 16 年前
        1
  •  4
  •   Per Jakobsen    16 年前

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

    有两种解决方案:

    1. 不启用内容类型(然后 同时移除整个 <contenttypes>节)
    2. 创建新的内容类型,包括 字段并添加该内容类型 代替项目
        2
  •  1
  •   Daniel Revell    16 年前

    我找到了解决我自己问题的办法。该字段不会在新的/显示/编辑表单中列出,因为这些页面基于内容类型。在本例中,是基于我的列表的项内容类型。

    通常我创建自己的内容类型,但我一直在尝试找到一种不定义全新内容类型的列表的速记方法。所以我所做的是直接在列表模式中定义字段,而不是引用内容类型中已经存在的字段。仅仅为一个只有一个额外字段的一次性查找列表定义内容类型似乎有点傻。

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

        3
  •  1
  •   Kusek    16 年前

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