2012-05-22 35 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