如何在子布局

时间:2016-01-20 13:07:02

标签: c# sitecore

我有一个子布局,其中有一个数据源指向该子布局渲染所需的数据,我正在通过

来读取
Sitecore.Context.Database.GetItem(this.DataSource)

然而,此数据的其中一个字段本身就是一个数据源,允许编辑器设置新闻项所在的位置。

因此,他们首先添加子布局并设置其数据源,该数据源定义了渲染面板的细节:标题,图标,颜色等,但同样会保留一个字段来设置文章保存的来源 - 这样子布局可以在页面上多次使用,但每个都设置为不同的内容节点。

因此我需要我的.cs来获取这个“数据源字段”的值,这样我就可以遍历该定义位置的每个新闻项,以呈现文章的链接。

要确认,该字段是DATASOURCE类型 - 希望这是有道理的。

由于

2 个答案:

答案 0 :(得分:2)

使用子布局时,请考虑创建基类

using Sitecore.Data.Items;
using Sitecore.Web.UI.WebControls;

public class BaseSublayout : System.Web.UI.UserControl {

private Item _dataSource = null;
public Item DataSource {
    get {
        if (_dataSource == null)
            if(Parent is Sublayout)
                _dataSource = Sitecore.Context.Database.GetItem(((Sublayout)Parent).DataSource);

        return _dataSource;
    }
}

public BaseSublayout() : base() { }

}

并且所有子布局都将从此基类继承。    您将在Datasource属性上拥有组件的数据源

答案 1 :(得分:1)

如果目标字段是数据源字段类型,请注意它按路径存储目标项而不是GUID。

假设该字段的名称是“通知位置”,您只需通过Sitecore API访问目标项目:

// your existing code
Item dataSource = Sitecore.Context.Database.GetItem(this.DataSource);

// new code
Item selectedNotificationLocationItem = Sitecore.Context.Database.GetItem(dataSource["Notification Location"])