Sitecore如何获取控件的数据源值

时间:2015-04-23 19:59:08

标签: sitecore datasource

是否可以在内容项上获取__Rendering控件的模板字段值? 特别是,我想在页面项目的控件中定义“数据源”字段值,如下面的屏幕截图所示。

如屏幕截图所示,我在页面项目中有一些控件,我想获得控件的“数据源”字段值。

enter image description here

我使用了这段代码,我可以列出在页面项上使用的所有控件。但是,我不知道如何在页面上获取控件的浏览数据源信息。

public RenderingReference[] GetListOfSublayouts(string itemId, Item targetItem)
{
    RenderingReference[] renderings = null;

    if (Sitecore.Data.ID.IsID(itemId))
    {
        renderings = targetItem.Visualization.GetRenderings(Sitecore.Context.Device, true);
    }

    return renderings;
}

public List<RenderingItem> GetListOfDataSource(RenderingReference[] renderings)
{
    List<RenderingItem> ListOfDataSource = new List<RenderingItem>();
    foreach (RenderingReference rendering in renderings)
    {
        if (!String.IsNullOrEmpty(rendering.Settings.DataSource))
        {
            ListOfDataSource.Add(rendering.RenderingItem);
        }
    }
    return ListOfDataSource;
}


RenderingReference[] renderings = GetListOfSublayouts(targetItem.ID.ToString(), targetItem);
List<RenderingItem> ListOfDataSource = GetListOfDataSource(renderings);

2 个答案:

答案 0 :(得分:3)

这正是我想要的。

完美的工作!!!!!!

AutoForm.hooks({
  add: {
    onSuccess: function(doc) {
      Router.go('page', ???);
    }
  }
});

答案 1 :(得分:2)

以下是一篇可以提供帮助的博文:Using the Data Source Field with Sitecore Sublayouts

以下是您可以在单个控件中调用的相关代码:

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;
    }
}

访问上面定义的DataSource属性将为您提供从CMS分配为数据源的项目。