我已经定义了一个包含以下字段的自定义列表模板:
<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>
请注意,ShowInNewForm
,ShowInEditForm
和ShowInViewForms
属性都设置为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>
答案 0 :(得分:2)
我刚刚碰到了非常相似的东西。 ListFieldIterator未呈现自定义字段。该列表基于自定义列表定义和自定义内容类型以及包含的自定义列表表单。自定义字段显示在内容类型以及列表的设置页面中。自定义列表表单是开箱即用(12 \ Template \ Pages \)form.aspx文件的副本。
内容类型包含FieldRef标签ala:
<FieldRef ID="{73AB0549-19DA-43af-938B-873EAD93FE4E}" />
在某些地方建议使用此格式,例如Furuknap的Building the SharePoint User Experience(第261页)。
在&lt; FieldRef&gt;中添加名称属性标签修复了这个问题。
<FieldRef ID="{73AB0549-19DA-43af-938B-873EAD93FE4E}" Name="TestAttachment1" />
根据这些经验,我计划始终在自定义内容类型的FieldRef元素中包含Name属性。希望这能节省一些时间。
答案 1 :(得分: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" />