我有一个子布局,其中有一个数据源指向该子布局渲染所需的数据,我正在通过
来读取Sitecore.Context.Database.GetItem(this.DataSource)
然而,此数据的其中一个字段本身就是一个数据源,允许编辑器设置新闻项所在的位置。
因此,他们首先添加子布局并设置其数据源,该数据源定义了渲染面板的细节:标题,图标,颜色等,但同样会保留一个字段来设置文章保存的来源 - 这样子布局可以在页面上多次使用,但每个都设置为不同的内容节点。
因此我需要我的.cs来获取这个“数据源字段”的值,这样我就可以遍历该定义位置的每个新闻项,以呈现文章的链接。
要确认,该字段是DATASOURCE类型 - 希望这是有道理的。
由于
答案 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"])