模板中的Sitecore数据源查询

时间:2015-02-04 21:24:58

标签: sitecore datasource sitecore7

如何在模板的DataSource中编写查询以生成项目的路径?

如果我在DataSource字段中编写查询并且页面使用模板,则数据源值将作为动态数据源的项目路径,如屏幕截图。

enter image description here

1 个答案:

答案 0 :(得分:5)

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

如果您要在Sublayout的数据源中输入查询,则需要使用Sublayout Item上的Enable Datasource Query字段。通过数据源传递查询:

Datasource query example

然后检索查询并执行;

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上的博客