如何在模板的DataSource中编写查询以生成项目的路径?
如果我在DataSource字段中编写查询并且页面使用模板,则数据源值将作为动态数据源的项目路径,如屏幕截图。
答案 0 :(得分:5)
如果您正在寻找Sitecore来自动生成子布局的数据源到它放置的项目,类似于具有Source属性的模板字段,那么目前没有任何方法可以实现此目的。
如果您要在Sublayout的数据源中输入查询,则需要使用Sublayout Item上的Enable Datasource Query字段。通过数据源传递查询:
然后检索查询并执行;
protected void Page_Load(object sender, EventArgs e)
{
//Handle a single GUID
var searches = ((Sublayout)this.Parent).DataSource;
if (searches.IsGuid())
{
var itemDummyList = new List<Item>();
itemDummyList.Add(Sitecore.Context.Database.GetItem(searches));
this.SampleListView.DataSource = itemDummyList;
this.SampleListView.DataBind();
return;
}
//Handle a search query
using (var context = ContentSearchManager.CreateSearchContext((SitecoreIndexableItem)Sitecore.Context.Item))
{
var timer = new Stopwatch();
timer.Start();
//This gives us our IQueryable
var query = LinqHelper.CreateQuery(context, UIFilterHelpers.ParseDatasourceString(searches))
.Select(toItem => toItem.GetItem()).Take(10);
this.SampleListView.DataSource = query;
this.SampleListView.DataBind();
timer.Stop();
//Display the query time only in Debug Mode
if (Sitecore.Context.PageMode.IsDebugging)
{
this.RunTime.Text = " Debug Information: " + timer.ElapsedMilliseconds + " ms to render";
}
}
}
参考John West; Sitecore 7 Datasource Explained上的博客