【问题标题】:Copy Presentation Details to new PlaceHolder programmatically Sitecore 7.2以编程方式将演示文稿详细信息复制到新的 PlaceHolder Sitecore 7.2
【发布时间】:2017-08-05 22:11:06
【问题描述】:

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

出于这个原因,我创建了一个只有占位符的新布局。 让我们称之为 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??
  }
}

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

【问题讨论】:

  • 是否可以选择使用其他“设备”进行打印?这样您就无需编写代码 - 您只需在 Sitecore 中为设备创建另一个布局定义。

标签: sitecore sitecore7 sitecore7.2


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-09-22
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多