Программное копирование сведений о презентации в новый PlaceHolder Sitecore 7.2

в настоящее время я работаю над страницей, которая создает представление для печати определенного элемента. Так что это означает, что мне не нужны все вещи из моего MainLayout, такие как навигация и т. д.

По этой причине я создал новый макет, в котором есть только заполнитель. Назовем это 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??
  }
}

Конечно, очень важно, чтобы каждый подмакет поддерживал текущий источник данных. Любая помощь будет оценена, спасибо всем


person Bgl86    schedule 15.03.2017    source источник
comment
Можно ли использовать другое устройство для печати? Таким образом, вам не нужно кодировать его — вы можете просто создать другое определение макета для устройства в Sitecore.   -  person Gatogordo    schedule 15.03.2017


Ответы (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());
      } 
  }
}

Это автоматически добавит визуализацию в макет.

person Hishaam Namooya    schedule 15.03.2017