2011-07-07 7 views
4

xlsのデータを使用してプログラムでコンテンツツリーアイテムノードを作成しています。私はアイテムノードにレイアウトを関連付ける際に問題に直面しています。私が使用できるアイテムのセッターメソッドを特定できません。私はItem.Visualizationプロパティを使うことを考えましたが、それは助けになりませんでした。 レイアウトアイテムをアイテムノードにプログラムで関連付ける方法のサンプルコードを参考にして助言を受けてください。SiteCoreのプログラムでレイアウトアイテムをアイテムノードに関連付けます

答えて

5

私はこれが非常に直感的ではないので、なぜあなたがこれを見つけるのか理解しています。私はそれを行う方法についていくつかのサンプルコードを作成し、おそらく後でそれについてのブログ記事を書くでしょう。それまでは、ここでのサンプルコードです:

using(new SecurityDisabler()) 
    { 
    Database masterDatabase = Database.GetDatabase("master"); 
    ID sampleLayoutId = new ID("{14030E9F-CE92-49C6-AD87-7D49B50E42EA}"); 
    ID defaultDeviceId = new ID("{FE5D7FDF-89C0-4D99-9AA3-B5FBD009C9F3}"); 
    ID sampleItemId = new ID("{2E4C98CF-DD72-4B55-9DF6-2F6691A6690B}"); 
    ID sampleRenderingId = new ID("{493B3A83-0FA7-4484-8FC9-4680991CF743}"); 

    Item sampleItem = masterDatabase.GetItem(sampleItemId); 


    Item layoutItem = masterDatabase.GetItem(sampleLayoutId); 


    LayoutDefinition layoutDefinition = new LayoutDefinition(); 
    layoutDefinition.LoadXml(sampleItem["__Renderings"]); 
    DeviceDefinition deviceDefinition = layoutDefinition.GetDevice(defaultDeviceId.ToString()); 
    deviceDefinition.ID = defaultDeviceId.ToString(); 
    deviceDefinition.Layout = sampleLayoutId.ToString(); 
    RenderingDefinition renderingDefinition = new RenderingDefinition(); 
    renderingDefinition.ItemID = sampleRenderingId.ToString(); 
    deviceDefinition.AddRendering(renderingDefinition); 


    sampleItem.Editing.BeginEdit(); 
    sampleItem["__Renderings"] = layoutDefinition.ToXml(); 
    sampleItem.Editing.EndEdit(); 
    } 

私はブログの記事を書く時間を得るとき、それ以外の場合は、より説明的になり、あなたがそれから意味をなすことができると思います。

+1

あなたのブログ記事を待っています、私は好奇心が強いです:) – Younes

+0

こんにちはジェンス、完全に動作するコードをありがとう。 //layoutDefinition.LoadXml(sampleItem["__Renderings "])行をコメントアウトしました。プレースホルダとレンダリングが関連付けられていないためです。あなたの助けをもう一度ありがとう。 –

+0

+1これは非常に役に立ちます – marto

関連する問題