将演示文稿详细信息以编程方式将SiteHolder复制到Sitecore 7.2

时间:2017-03-15 09:04:13

标签: sitecore sitecore7 sitecore7.2

目前我正在处理一个生成特定项目打印视图的页面。所以这意味着我不需要我的MainLayout中的所有东西,比如导航等。

出于这个原因,我创建了一个只有占位符的新Layout。 让我们称之为PrintLayout.aspx:

<sc:placeholder ID="PlPrint" runat="server" key="phPrintOutput"></sc:placeholder> 

在后面的代码中,我有一个从项目中获取渲染的方法,但是我想要将它们动态复制到我的phPrintOutput占位符:

public void AddPresentationDetailsToPlaceHolder(Item item)
{
  List<RenderingReference> renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, false).ToList();
  foreach(RenderingReference r in renderings)
  {
    // How can I apply the renderings on the fly to my phPrintOutput Placeholder??
  }
}

当然,每个子布局都保持当前的数据源是非常重要的。 任何帮助将不胜感激,谢谢大家

1 个答案:

答案 0 :(得分:0)

您只需要将控件添加到占位符。为此,请参阅以下代码:

public void AddPresentationDetailsToPlaceHolder(Item item)
{
  List<RenderingReference> renderings = item.Visualization.GetRenderings(Sitecore.Context.Device, false).ToList();
  foreach(RenderingReference r in renderings)
  {
      if(r.RenderingID == new ID("Rendering Id you want to be displayed on layout"))
      {
          this.PlPrint.Controls.Add(r.GetControl());
      } 
  }
}

这会自动将渲染添加到布局中。