3

I've defined a custom list template with the following fields:

<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>

Note that the ShowInNewForm, ShowInEditForm, and ShowInViewForms properties are all set to TRUE. When I create a list from the deployed template (I'm doing this from VSeWSS 1.3), the list has the correct fields, but a new item form doesn't render the custom fields at all. Anyone know why this would be so? Do I have to fully customize the control templates loaded by the ListFormWebPart Doesn't that defeat the purpose of the ListFieldIterator control?

Edit:

Also, the end of the schema.xml file has this bit:

<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>
4

2 回答 2

2

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

内容类型包含 FieldRef 标记 ala:


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

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

在 <FieldRef> 标记中添加Name属性解决了该问题。


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

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

于 2010-07-18T17:50:54.840 回答
1

当您说您使用此处列出的字段创建列表模板时,它们是否属于内容类型?如果是,内容类型中列的定义是否与 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" />
于 2010-02-09T03:25:56.890 回答