5

给定具有核心服务的结构组 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”。

4

1 回答 1

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 
})
于 2012-11-05T18:20:47.767 回答