我正在尝试理解OrganizationalItemItemsFilterData过滤器中的BasedOnSchemas选项的用途。
文件明确指出: “获取或设置BasedOnSchemas条件以仅返回使用给定模式的项目” 所以应该可以只检索特定模式的组件,对吗?
这是我的代码:
LinkToSchemaData[] schemaLinks = new[] {
new LinkToSchemaData { IdRef = "tcm:113-362325-8" }
};
OrganizationalItemItemsFilterData filter =
new OrganizationalItemItemsFilterData();
filter.BaseColumns = ListBaseColumns.Extended;
filter.ItemTypes = new ItemType[] { ItemType.Component };
filter.Recursive = true;
filter.BasedOnSchemas = schemaLinks;
XElement items = client.GetListXml("tcm:113-14192-2", filter);
然而,XElement items
将包含多种类型的组件,而不仅仅是架构tcm:113-362325-8
如何只检索那些基于我的架构的组件?
答案 0 :(得分:11)
不支持同时使用BasedOnSchemas
和Recursive = true
。删除递归,你会发现架构过滤器有效。
如果要获取某个Schema的所有组件的“递归”列表,请考虑在Schema上执行WhereUsed。
GetListXml("tcm:5-59-8", new UsingItemsFilterData())