1

我有一个自定义列表定义(schema.xml)我已经设置了站点列(通过 A 功能)和许多内容类型也通过一个功能,这一切都很好。我有一个列表定义(schema.xml),并且我已按照我希望它们出现的顺序将内容类型放在顶部(假设顶部的内容类型将是列表的默认值 - 这就是我想要的)

注意:我已经设置

EnableContentTypes="true" 

这是我的 schema.xml 的摘录

<ContentTypes>
  <!-- Folder based content type -->
  <ContentTypeRef ID="0x0120006ad66a4924644ac98d371a0e069c5d99" />
  <!-- Item Based Content Type -->
  <ContentTypeRef ID="0x0100a18ddd58b9384567bc776a3c5889ea77" />
  <!--   ..... more content types ...  -->
</ContentTypes>

我遇到的问题是,当提供列表时,基于文件夹的内容类型在列表中始终排在第二位,因此永远不是列表中的默认值,我可以使其默认的唯一方法是删除所有其他内容类型声明这有点违背了具有多种内容类型的对象。这个排序是因为列表的配置方式还是我错过了隐藏在 SDK 深处的东西,任何帮助都非常感激地接受

4

3 回答 3

1

使用 FeatureReceiver,您可以将列表 RootFolder.UniqueContentTypeOrder 设置为 ContentTypes 的有序列表,然后确定按钮顺序。

您也可以忽略不希望可用的 ContentType,即使它们已在列表中定义。通常将此与设置添加文件夹的按钮顺序 (UniqueContentTypeOrder) 的事件接收器结合使用,以引导人们进入特定结构,例如只有顶层文件夹而没有嵌套文件夹(或只有 x 层深)或您喜欢的.

于 2009-07-25T15:46:00.163 回答
1

检查财产袋。您正在处理的列表可能有一个名为“vti_contenttypeorder”的属性,内容类型 ID 的顺序是当您通过 UI 重新排序它们时它们将显示的顺序。

于 2013-04-09T20:45:51.947 回答
0

...以@Renan 答案为基础 - 以声明方式设置您的默认内容类型。创建一个模块,将其命名为 Property bag 并将其添加到包含您的列表实例的 Web 范围功能中。Elements.xml 应包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <PropertyBag Url="<!--URL of your list instance here-->" ParentType="Folder" RootWebOnly="FALSE" AlwaysCreateFolder="TRUE" xmlns="http://schemas.microsoft.com/sharepoint/">
    <Property Name="vti_contenttypeorder" Value="<!--Your custom Content Type ID here-->" Type="string" /> 
  </PropertyBag>
</Elements>
于 2016-02-04T19:44:16.987 回答