2015-09-24 34 views
0

讓我們說,如果Sitecore的項目item有一個字段Created byLink Types:DroptreeSitecore的:以顯示其與類型鏈接類型保存在外地的項目名稱高效方式:Droptree

我要打印項目的名稱,其保存在Created by的字段中。以下行<sc:Text Field="Created by" runat="server"/>將打印ItemId。什麼是有效的方式來顯示這個項目的名稱。

我知道我可以從數據庫中獲取的項目,然後打印它的名稱爲:

<asp:Label runat="server" ID="lblItemName"></asp:Label> 

在代碼隱藏:

if (!Page.IsPostBack) 
      { 
       Item currentItem = Sitecore.Context.Item; 

       Item relatedItem = Sitecore.Context.Database.GetItem(currentItem["Created by"]); 

       lblItemName.Text = relatedItem.Name; 
      } 

回答

0

我不認爲這是有可能使一個項目的名稱與<sc:Text />,因爲它是字段渲染器。

所以,你必須做像你這樣:

var currentItem = Sitecore.Context.Item; 

// Alternative way to get the linked item 
var createdByField = (ReferenceField) currentItem.Fields["Created by"]; 
var createdByItem = createdByField.TargetItem; 
var createdByItemName = createdByItem.Name; 

lblItemName.Text = createdByItemName; 

如果你想從鏈接項(createdByItem)呈現,而不是當前上下文項,你可以像下面這樣做:

<sc:Text runat="server" Field="Headline" ID="scRelatedItem" /> 

和int後面的代碼設置了項目屬性的項目,你想讀的標題字段從:

scRelatedItem.Item = createdByItem; 

這樣做,這樣也會使現場編輯通過網頁編輯器編輯器(稱爲經驗編輯在Sitecore的8)。

1

你將需要傳遞一個項目價值到您的<sc:Text/>標籤或它將使用上下文項目。

<sc:Text Field="Created by" Item="<%# RelatedItem %>" runat="server"/> 

在代碼中設置的RelatedItem背後的價值,並在您的Page_Load()方法的最後調用DataBind();

相關問題