我有一个自定义列表定义(schema.xml)我已经通过一个功能设置了站点列(通过A功能)和众多内容类型,这一切都正常。我有一个列表定义(schema.xml),我已按照我希望它们出现的顺序将内容类型放在顶部(假设顶级内容类型将是列表的默认值 - 这就是我想要的)< / p>
注意:我已设置
EnableContentTypes="true"
这是我的schema.xml
的摘录<ContentTypes>
<!-- Folder based content type -->
<ContentTypeRef ID="0x0120006ad66a4924644ac98d371a0e069c5d99" />
<!-- Item Based Content Type -->
<ContentTypeRef ID="0x0100a18ddd58b9384567bc776a3c5889ea77" />
<!-- ..... more content types ... -->
</ContentTypes>
我遇到的问题是,当配置列表时,基于文件夹的内容类型总是列表中的第二个,因此从不是列表中的默认值,我可以将其设置为默认的唯一方法是删除所有其他内容类型声明哪种类型会破坏具有多种内容类型的对象。这个排序是因为列表的配置方式还是我遗漏了SDK深处隐藏的东西,感激不尽的任何帮助
答案 0 :(得分:1)
使用FeatureReceiver,您可以将列表RootFolder.UniqueContentTypeOrder设置为ContentTypes的有序列表,然后确定按钮顺序。
您也可以省略您不希望可用的ContentTypes,即使它们已在列表中定义。将它与事件接收器结合起来是很常见的,它设置了添加的文件夹的按钮顺序(UniqueContentTypeOrder),引导人们进入某个结构,例如只有顶级文件夹,没有嵌套文件夹(或者只有x级深)或者你喜欢什么
答案 1 :(得分:1)
检查属性包。您正在处理的列表可能有一个名为“vti_contenttypeorder”的属性,其内容类型ID将按照它们通过UI重新排序时显示的顺序显示。
答案 2 :(得分:0)
...以@Renan回答为基础 - 以声明方式设置您的默认内容类型。 创建一个模块,将其命名为Property bags并将其添加到包含列表实例的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>