【问题标题】:Fields in custom SharePoint list template not rendered list item forms自定义 SharePoint 列表模板中的字段未呈现列表项表单
【发布时间】:2011-01-14 14:21:42
【问题描述】:

我定义了一个包含以下字段的自定义列表模板:

<Fields>
      <Field Type="Text" DisplayName="Sub-Title" Name="SubTitle" StaticName="SubTitle" ShowInNewForm="TRUE" 
             ShowInEditForm="TRUE" ShowInViewForms="TRUE">        
      </Field>
      <Field Type="URL" DisplayName="Header Image" Name="HeaderPicUrl" StaticName="HeaderPicUrl" ShowInNewForm="TRUE" 
             ShowInEditForm="TRUE" ShowInViewForms="TRUE">
      </Field>
      <Field Type="Note" RichText="True" RichTextMode="FullHtml" IsolateStyles="True" NumLines="5" Name="Summary" DisplayName="Summary" 
             StaticName="Summary" Sortable="False" ShowInNewForm="TRUE" ShowInEditForm="TRUE" ShowInViewForms="TRUE">
      </Field>
      <Field ID="{7662cd2c-f069-4dba-9e35-082cf976e170}" Type="Note" RichText="TRUE" RichTextMode="FullHtml" IsolateStyles="TRUE" 
             NumLines="45" Name="Body" DisplayName="$Resources:core,camlid2;" Sortable="FALSE" 
             SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Body">
            </Field>
      <Field ID="{6a09e75b-8d17-4698-94a8-371eda1af1ac}" Type="DateTime" Name="Expires" DisplayName="$Resources:core,camlid3;" 
             Format="DateOnly" FromBaseType="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Expires">
      </Field>
</Fields>

请注意,ShowInNewFormShowInEditFormShowInViewForms 属性都设置为 TRUE。当我从部署的模板创建列表时(我从 VSeWSS 1.3 执行此操作),该列表具有正确的字段,但新的项目表单根本不呈现自定义字段。有谁知道为什么会这样?我是否必须完全自定义ListFormWebPart 加载的控件模板,这不是违背ListFieldIterator 控件的目的吗?

编辑:

另外,schema.xml 文件的末尾有这个位:

<Forms>      
    <Form Type="DisplayForm" Url="DispForm.aspx" WebPartZoneID="Main"/>
    <Form Type="EditForm" Url="EditForm.aspx" WebPartZoneID="Main"/>
    <Form Type="NewForm" Url="NewForm.aspx" WebPartZoneID="Main"/>
</Forms>

【问题讨论】:

  • 你有没有解决过这个问题以及如何解决的?
  • @Kyberias:不幸的是,这是很久以前的事了,我现在不记得了。我怀疑下面杰森韦伯的回答为我解决了这个问题,但我不能确定,因为我从未将其标记为答案,现在我不记得了。很抱歉!

标签: xml sharepoint vsewss


【解决方案1】:

我刚刚遇到了非常相似的事情。 ListFieldIterator 未呈现自定义字段。该列表基于自定义列表定义和自定义内容类型,并包含自定义列表表单。自定义字段显示在内容类型以及列表的设置页面中。自定义列表表单是现成的 (12\Template\Pages\)form.aspx 文件的副本。

内容类型包含 FieldRef 标签 ala:


      <FieldRef ID="{73AB0549-19DA-43af-938B-873EAD93FE4E}" />

在一些地方建议使用这种格式,例如Furuknap 的 Building the SharePoint User Experience(第 261 页)。

标签中添加 Name 属性解决了这个问题。


      <FieldRef ID="{73AB0549-19DA-43af-938B-873EAD93FE4E}" Name="TestAttachment1" />

基于此经验,我计划始终在自定义内容类型的 FieldRef 元素中包含 Name 属性。希望这可以节省其他人一些时间。

【讨论】:

    【解决方案2】:

    当您说您使用此处列出的字段创建列表模板时,它们是否属于内容类型?如果是,内容类型中列的定义是否与 schema.xml 中的字段定义匹配?

    您是否在对 schema.xml 进行更改后重新创建了列表?

    编辑: 要包含在 schema.xml 中的字段。如果这些字段不存在,而只是您定义列的位置,那么这可能就是您创建新项目时它们没有出现在 newForm.aspx 中的原因。

    <Field Type="Text" DisplayName="..." Description="..." Required="FALSE" MaxLength="255" Group="..." ID="{GUID}" Name="..." Hidden="FALSE" ReadOnly="FALSE" />
    

    【讨论】:

    • 没有与这些字段关联的内容类型。
    • 要回答您的问题,不,您不需要自定义控件模板,这些字段会显示。用您在问题中提出的 的片段,它位于您的代码中的什么位置,在 schema.xml 中?我不认为 HIDDEN 属性的默认值是 true,但添加它不会有什么坏处。我使用架构中 部分中通常包含的字段编辑了我的回复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 2018-02-08
    • 2012-02-02
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多