我正在开发一个实现新列表的 Sharepoint 解决方案。此列表具有附加到自定义内容类型的事件接收器。
我正在使用 VSeWSS 1.3 执行此任务,一切正常(创建了内容类型,创建了一个列表并将其绑定到内容类型,事件接收器成功触发。
我唯一担心的是,在创建的列表中,它始终显示基本内容类型(带有标题字段的项目 CT)。通过 Web GUI,我可以隐藏此内容类型,但我无法在我的 XML 定义中找到执行此操作的位置,或者在解决方案中使用它以避免部署时的双重任务。
有什么建议么??
我正在开发一个实现新列表的 Sharepoint 解决方案。此列表具有附加到自定义内容类型的事件接收器。
我正在使用 VSeWSS 1.3 执行此任务,一切正常(创建了内容类型,创建了一个列表并将其绑定到内容类型,事件接收器成功触发。
我唯一担心的是,在创建的列表中,它始终显示基本内容类型(带有标题字段的项目 CT)。通过 Web GUI,我可以隐藏此内容类型,但我无法在我的 XML 定义中找到执行此操作的位置,或者在解决方案中使用它以避免部署时的双重任务。
有什么建议么??
您必须为自定义列表编辑 Schema.xml。找到<ContentTypes>
标签并删除任何您不希望显示的内容。
您的列表定义将有一个 guid(例如<Elements Id="0a8594c8-5cf1-492e-88ce-df943830c88c"
),它将从模式 xml 中指定列表(例如<List Name="... ...Id="0a8594c8-5cf1-492e-88ce-df943830c88c">
)
我不确定实现的目的是什么,通常有一个 feature.xml 将以前的 xml 文件组合在一起(例如<ElementManifests><ElementManifest Location="MyFeature\ListDefinition.xml" /><ElementFile Location="MyFeature\schema.xml" />
)
在 schema.xml 中,您需要进行 2 处更改
在 <List> 元素中添加以下属性:
EnableContentTypes="TRUE"
<ContentTypes> 元素应该包含一个指定您的自定义内容类型的 <ContentType> 元素。
例如:
<?xml version="1.0"?>
<List
xmlns:ows="Microsoft SharePoint"
Title="List_Title"
FolderCreation="FALSE"
Direction="$Resources:Direction;"
Url="Lists/List_Title"
BaseType="0"
Name="List_Title"
Id="51D716AC-DF9D-4ebb-9F8E-9134EEBB7C39"
Type="100"
xmlns="http://schemas.microsoft.com/sharepoint/"
EnableContentTypes="TRUE"
>
<MetaData>
<ContentTypes>
<ContentTypeRef ID="0x01..." />
</ContentTypes>
这两个答案都对我有帮助,但我还发现您需要在列表定义中再次指定列(不仅在内容类型中),否则它们不会出现在列表中。