模板中的Sitecore数据源查询

模板中的Sitecore数据源查询,sitecore,datasource,sitecore7,Sitecore,Datasource,Sitecore7,如何在模板的数据源中编写查询以生成项的路径 如果我在DataSource字段中编写一个查询,并且页面使用该模板,那么DataSource值将是作为动态DataSource的项的路径,如屏幕截图所示 如果您正在寻找Sitecore自动生成子布局的数据源到放置它的项目,类似于具有Source属性的模板字段,目前没有任何现成的方法可以实现这一点 如果希望在子布局的数据源中输入查询,则需要在子布局项上使用“启用数据源查询”字段。通过数据源传入查询: 然后检索查询并执行 受保护的无效页面加载(对象发送方

如何在模板的数据源中编写查询以生成项的路径

如果我在DataSource字段中编写一个查询,并且页面使用该模板,那么DataSource值将是作为动态DataSource的项的路径,如屏幕截图所示


如果您正在寻找Sitecore自动生成子布局的数据源到放置它的项目,类似于具有Source属性的模板字段,目前没有任何现成的方法可以实现这一点

如果希望在子布局的数据源中输入查询,则需要在子布局项上使用“启用数据源查询”字段。通过数据源传入查询:

然后检索查询并执行

受保护的无效页面加载(对象发送方,事件参数e)
{
//处理单个GUID
var searches=((子布局)this.Parent).DataSource;
if(searches.IsGuid())
{
var itemdumylist=新列表();
添加(Sitecore.Context.Database.GetItem(搜索));
this.SampleListView.DataSource=itemDummyList;
this.SampleListView.DataBind();
返回;
}
//处理搜索查询
使用(var context=ContentSearchManager.CreateSearchContext((SitecoreIndexableItem)Sitecore.context.Item))
{
var timer=新秒表();
timer.Start();
//这给我们提供了我们的解决方案
var query=LinqHelper.CreateQuery(上下文,UIFilterHelpers.ParseDatasourceString(搜索))
.Select(toItem=>toItem.GetItem()).Take(10);
this.SampleListView.DataSource=查询;
this.SampleListView.DataBind();
timer.Stop();
//仅在调试模式下显示查询时间
if(Sitecore.Context.PageMode.IsDebugging)
{
this.RunTime.Text=“调试信息:“+timer.elapsedmillisons+”要渲染的毫秒数”;
}
}
}

参考约翰·韦斯特;写博客

为什么不改用Sitecore.Context.Item?有什么区别吗?我想你在寻找这个:虽然我发现你的问题有点困惑。我的问题是“如何在sublayout的数据源中进行查询以生成页面项的路径”