Sitecore如何获得控制权';s数据源值

Sitecore如何获得控制权';s数据源值,sitecore,datasource,Sitecore,Datasource,是否可以在内容项上获取_呈现控件的模板字段值? 特别是,我想获得在页面项的控件中定义的“数据源”字段值,如下面的屏幕截图 如屏幕截图所示,我在页面项中有一些控件,我想获取控件的“数据源”字段值 我使用了这段代码,可以列出页面项上使用的所有控件。但是,我不知道如何在页面上获取控件浏览的数据源信息 public RenderingReference[]GetListOfSublayouts(string itemId,Item targetItem) { RenderingReference[]r

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

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

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

public RenderingReference[]GetListOfSublayouts(string itemId,Item targetItem)
{
RenderingReference[]renderings=null;
if(Sitecore.Data.ID.IsID(itemId))
{
renderings=targetItem.Visualization.GetRenderings(Sitecore.Context.Device,true);
}
返回渲染;
}
公共列表GetListOfDataSource(RenderingReference[]renderings)
{
List LISTOFDATASURCE=新列表();
foreach(渲染中的渲染参考渲染)
{
如果(!String.IsNullOrEmpty(rendering.Settings.DataSource))
{
添加(rendering.RenderingItem);
}
}
返回数据源列表;
}
RenderingReference[]renderings=GetListOfSublayouts(targetItem.ID.ToString(),targetItem);
List ListOfDataSource=GetListOfDataSource(渲染);

以下是一篇有助于:

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

私有项_dataSource=null;
公共项数据源
{
得到
{
如果(_dataSource==null)
如果(父项为子布局)
_dataSource=Sitecore.Context.Database.GetItem(((子布局)父项).dataSource);
返回_数据源;
}
}

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

这正是我想要的

完美工作

public IEnumerable GetDatasourceValue(项targetItem)
{
List uniqueDatasourceValues=new List();
Sitecore.Layouts.RenderingReference[]renderings=GetListOfSublayouts(targetItem.ID.ToString(),targetItem);
foreach(渲染中的var渲染)
{
如果(!uniqueDatasourceValues.Contains(rendering.Settings.DataSource))
uniqueDatasourceValues.Add(rendering.Settings.DataSource);
}
返回uniqueDatasourceValues;
}
}

我使用了该代码,但当我添加一个条件时,如果(DataSource==null),则为true。如何定义页面项,使其成为父项。我不直接访问子布局,因为这是使用工作流管道的附加程序集。我不确定我是否理解您的问题。你能重新措辞吗?马克,我把我的答案贴出来了,效果很好。要获取页面上的控件列表,renderingReferece和IEnumerable接口是关键。