获取具有核心服务的结构组TCM URI的子结构组

And*_*mon 5 tridion tridion-2011

如何在给定具有核心服务的结构组TCM URI的情况下获取所有子结构组?

我尝试使用此代码:

ItemsFilterData sgFilter = new RepositoryItemsFilterData 
    { ItemTypes = new[] { ItemType.StructureGroup }, 
      Recursive = true, 
      BaseColumns = ListBaseColumns.Id };

XElement listXml;

using (CoreServiceClient client = _coreServiceProvider.GetCoreServiceClient())
{
    listXml = XElement.Parse(
              client.ProxyClient.GetListXml(structureGroupUri, sgFilter)
              .OuterXml);
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一条错误,上面写着"意外的项目类型:StructureGroup".

Fra*_*len 6

从Publication的URI开始,这有效:

client.GetListXml("tcm:0-10-1", new RepositoryItemsFilterData { 
    ItemTypes = new[] { ItemType.StructureGroup }, 
    Recursive = true, 
    BaseColumns = ListBaseColumns.Id 
})
Run Code Online (Sandbox Code Playgroud)

技巧总是找到正确的过滤器类型,在这种情况下是RepositoryItemsFilterData.

非工作样本

从结构组的URI开始,返回直接子结构组.请注意,这Recursive = true似乎在这里被忽略.

client.GetListXml("tcm:10-328-4", new OrganizationalItemItemsFilterData { 
    ItemTypes = new[] { ItemType.StructureGroup }, 
    Recursive = true, 
    BaseColumns = ListBaseColumns.Id 
})
Run Code Online (Sandbox Code Playgroud)

  • 更多示例:http://stackoverflow.com/search?q = OrganizationalItemItemsFilterData+文件夹和结构组是OrganizationalItems,因此适用相同的过滤器选项. (3认同)