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

时间:2012-11-05 17:51:57

标签: 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);
}

但是我收到错误消息“意外的项目类型:StructureGroup”。

1 个答案:

答案 0 :(得分:6)

从出版物的URI开始,这有效:

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

诀窍始终是找到正确的过滤器类型,在本例中为RepositoryItemsFilterData

非工作样本

从结构组的URI开始,这将返回直接子结构组。请注意,此处似乎忽略了Recursive = true

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