2017-03-15 8 views
0

現在、私は特定のアイテムの印刷ビューを生成するページを作成中です。これは、ナビゲーションなどのMainLayoutからすべてのものを必要としないことを意味します。プレゼンテーションの詳細を新しいPlaceHolderにプログラムでコピーするSitecore 7.2

このため、プレースホルダのみを持つ新しいレイアウトを作成しました。私はアイテムのレンダリングを取得し、私は私が上で私のphPrintOutputプレースホルダにコピーしたいポイントで立ち往生しています方法を持っているの背後にあるコードで

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

: はこのPrintLayout.aspxを呼び出すことができますfly:

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?? 
    } 
} 

もちろん、すべてのサブレイアウトが現在のデータソースを保持することは非常に重要です。 ご協力いただきありがとうございます。ありがとうございました

+0

印刷に別の「デバイス」を使用することはできますか?このように、コードを書く必要はありません。Sitecoreのデバイスの別のレイアウト定義を作成するだけです。 – Gatogordo

答えて

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

これは自動的にレイアウトにレンダリングを追加します。

関連する問題