自定义列表定义+自定义内容类型=仅显示一个表单字段?

时间:2009-07-24 13:53:12

标签: sharepoint

尝试使用功能部署自定义字段,内容类型和列表。到目前为止,我有一个引用自定义和内置字段的内容类型。内容类型继承Item(0x01)。

现在,我创建引用内容类型和字段(内置和自定义)的自定义列表定义。我明确地将ShowInDisplayForm, ShowInEditForm, ShowInNewForm值设置为true,但是当我根据定义部署功能和创建列表时,我获得的只是所有表单中的单个Title字段!

但是,如果我将UI中的字段添加到列表中,它会显示在表单中!此外,如果我从UI创建自定义列表并添加内容类型,那么这些字段将以表单形式显示!

这是怎么回事?

顺便说一下,我在Visual Studio中使用VSeWSS工具,所以它已经正确地生成了很多东西。

一些代码:

<ContentTypes>
  <ContentTypeRef ID="0x01003420C661289843dbAB9E41F43C23BFD0" />
</ContentTypes>
<Fields>
  <Field ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" Group="$Resources:core,Extended_Columns" Required="TRUE" ShowInDisplayForm="TRUE" ShowInEditForm="TRUE" ShowInNewForm="TRUE" Type="Text" Sortable="TRUE" Filterable="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
  <Field ID="{B4629012-C672-4911-B0D0-B9CB2DA44ED2}" DisplayName="Jautājumu pacēla" Group="$Resources:core,Extended_Columns" Name="QuestionRisedBy" Required="TRUE" ShowInDisplayForm="TRUE" ShowInEditForm="TRUE" ShowInNewForm="TRUE" Type="User" Sortable="TRUE" Filterable="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
  <Field ID="{6DF9BD52-550E-4a30-BC31-A4366832A87F}" DisplayName="Komentārs" Group="$Resources:core,Extended_Columns" Name="Comment" AppendOnly="TRUE" Required="FALSE" NumLines="12" Type="Note" ShowInDisplayForm="TRUE" ShowInEditForm="TRUE" ShowInNewForm="TRUE" Sortable="FALSE" Filterable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
  <Field ID="{FC072586-E8BB-444f-AAA4-8D5745FBC096}" DisplayName="ParentItemId" Group="$Resources:core,Extended_Columns" Name="AgendaParentItemId" Required="TRUE" Type="Integer" Sortable="FALSE" Filterable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
  <Field ID="{29207E42-E107-4379-B620-BAAFC461276B}" DisplayName="AgendaRootItemId" Group="$Resources:core,Extended_Columns" Name="AgendaRootItemId" Required="TRUE" Type="Integer" Sortable="FALSE" Filterable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
  <Field ID="{06063FDB-3C2A-4141-91F7-28C2739CE6B5}" DisplayName="AgendaItemClosed" Group="$Resources:core,Extended_Columns" Name="AgendaItemClosed" Required="FALSE" Type="Boolean" Sortable="TRUE" Filterable="TRUE" SourceID="http://schemas.microsoft.com/sharepoint/v3" />
</Fields>

1 个答案:

答案 0 :(得分:4)

是的,ContentType具有所有字段的FieldRef(嗯,不是继承的字段)。但是,当我在schema.xml中定义contet类型时,我会读到you must explicitly define Field`s also(这很奇怪),但是如果以编程方式添加ContentType,则会正确地将CType字段添加到定义

顺便说一句,你看到的是VSeWSS(VS的微软扩展)工具生成的(所有参考文献)。

Quite from SharePoint blog

  

您需要做的是添加   完全相同的元素    元素与内容一样   类型,包括相同的ID。这是一个   有点奇怪,但实际上你需要   两次都定义了两个字段   内容类型和schema.xml中   使这项工作。你可以跳过   集团和其他一些房产。

但是,如果我不使用Fields,我将获得例外:

[COMException (0x80004005): Nevar pabeigt šo darbību.

Lūdzu, mēģiniet vēlreiz.]
   Microsoft.SharePoint.Library.SPRequestInternalClass.GetViewsSchemaXml(String bstrUrl, String bstrListName, Boolean bFullBlown, ISP2DSafeArrayWriter p2DWriter, Int32& plDefaultViewIndex) +0
   Microsoft.SharePoint.Library.SPRequest.GetViewsSchemaXml(String bstrUrl, String bstrListName, Boolean bFullBlown, ISP2DSafeArrayWriter p2DWriter, Int32& plDefaultViewIndex) +122

哦,好吧,无论如何,我读过一篇文章(不能再找不到那篇文章),建议用功能接收器添加内容类型,然后在表单中正确显示字段。