2011-03-27 51 views
5

我想基于查询将asp:dropdownlist绑定到一些sitecore项目。通过查询,我想返回继承模板“Site Root”的项目。继承模板上的Sitecore SelectItems

当我使用:

Sitecore.Context.Database.SelectItems("/sitecore/content/*[@@templatename='Site Root']"); 

它仅返回“站点根目录”,而不是继承此模板的模板的模板项目。

如何获取查询以返回继承此模板的项目?

回答

7

您不能在继承模板

+0

好的,只是改变我的查询,包括所有从该模板继承的模板。 – Bevan 2011-03-28 03:21:43

+0

这当然是一个选项,但您添加到查询中的检查越多,它可能运行得越慢。您还应该考虑使用Sitecore API代码进行更通用的查询,然后使用LINQ按“TemplateName”过滤结果项 – 2011-03-28 13:34:03

5

这里查询的返回继承特定模板的所有模板的查询。但要小心,因为它表现不佳。

/sitecore/templates//*[contains(@__Base template, '<MY TEMPLATE ID>')] 

如果性能问题,你可能会更好使用Sitecore的ContentSearch查询模板。有一个__template计算字段需要首先激活。详情请参阅Sitecore-7-Enable-Default-Computed-Index-Fields