通过编程方式将演示文稿详细信息复制到新占位符Sitecore 7.2

通过编程方式将演示文稿详细信息复制到新占位符Sitecore 7.2,sitecore,sitecore7,sitecore7.2,Sitecore,Sitecore7,Sitecore7.2,目前,我正在处理一个生成特定项目打印视图的页面。因此,这意味着我不需要从我的主布局,如导航等所有的东西 出于这个原因,我创建了一个只有占位符的新布局。 我们将其称为PrintLayout.aspx: 在“代码隐藏”中,我有一个从项目获取渲染的方法,但我仍然停留在希望动态将它们复制到phPrintOutput占位符的位置: public void AddPresentationDetailsToPlaceHolder(项目) { List renderings=item.Visualizati

目前,我正在处理一个生成特定项目打印视图的页面。因此,这意味着我不需要从我的主布局,如导航等所有的东西

出于这个原因,我创建了一个只有占位符的新布局。 我们将其称为PrintLayout.aspx:


在“代码隐藏”中,我有一个从项目获取渲染的方法,但我仍然停留在希望动态将它们复制到phPrintOutput占位符的位置:

public void AddPresentationDetailsToPlaceHolder(项目)
{
List renderings=item.Visualization.GetRenderings(Sitecore.Context.Device,false).ToList();
foreach(渲染中的渲染参考r)
{
//如何将动态渲染应用于我的phPrintOutput占位符??
}
}
当然,非常重要的是,每个子布局都使其保持当前数据源。
任何帮助都将不胜感激,谢谢大家

您只需将控件添加到占位符即可。要执行此操作,请参见下面的代码:

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());
      } 
  }
}
public void AddPresentationDetailsToPlaceHolder(项目)
{
List renderings=item.Visualization.GetRenderings(Sitecore.Context.Device,false).ToList();
foreach(渲染中的渲染参考r)
{
如果(r.RenderingID==新ID(“您希望在布局上显示的呈现ID”))
{
this.PlPrint.Controls.Add(r.GetControl());
} 
}
}

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

是否可以选择使用其他“设备”进行打印?通过这种方式,您无需对其进行编码,只需在Sitecore中为设备创建另一个布局定义即可。