2012-05-22 37 views
0

任何人都可以告訴我是否可以使用ASP控件而不是Field Renderer來顯示字段。請參見下面的插圖。 注意:我需要在Repeater的Item Databound事件中執行此操作。Sitecore訪問字段值到ASP控制

我有一個Field作爲外部鏈接的模板。例如:聯繫我們。在頁面中顯示該鏈接的方法是使用下面的字段呈現器。

ContactUS.aspx:

<asp:Repeater ID="rptContactUS" runat="server" OnItemDataBound="Menu_OnItemDataBound"> 
     <ItemTemplate> 
      <item><sc:FieldRenderer ID="frContactUS" runat="server"/></item>           
     </ItemTemplate>  
</asp:Repeater> 

ContactUS.aspx.cs:

protected void Menu_OnItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     Field item = (Field)e.Item.DataItem; 
     if (item != null) 
     { 
      FieldRenderer frContactUS= (FieldRenderer)e.Item.FindControl("frContactUS"); 
      if (frContactUS!= null) 
      { 
       frContactUS.FieldName = item.Name; 
      } 
     }  
    } 

上面的代碼工作fine.My問題是,是否我可以使用ASP的控制,而不是FieldRenderer和分配從字段項目鏈接值到中繼器的項目數據綁定鏈接中的鏈接的asp href屬性。如果是,請告訴我如何?

感謝, 蘇哈斯

回答

0

當然可以。從我在你的例子中看到的你將Field綁定到Menu。 您也可以將項目列表綁定到您的菜單。然後,您可以檢索該項目的領域在轉發這樣的:

if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
     { 
      Item dataItem = (Item)e.Item.DataItem; 
        System.Web.UI.WebControls.HyperLink hl = (System.Web.UI.WebControls.HyperLink)e.Item.FindControl("hl"); 

        if (hl != null) 
        { 
        Sitecore.Data.Fields.LinkField url = dataItem.Fields["linkfield"]; 

        if (url != null) 
        { 
         hlMerk.NavigateUrl = url.Url; 
         hlMerk.Target = url.Target; 
         // more properties are available check sitecore documentation 
        }      
       } 
      } 

}

在這裏,您將有URL字段(很明顯,你應該給予正確的字段名稱,而不是網址 的LinkField了。在一般Sitecore文檔中可以找到幾個屬性,可以在@http://sdn.sitecore.net找到。

+0

謝謝younes :) – Suhas

+0

不客氣! – Younes