任何人都可以告诉我是否可以使用ASP Control而不是Field Renderer来显示该字段。请参见下图。 注意:我需要在Repeater的Item Databound事件中执行此操作。
我有一个模板,其中字段为外部链接.Eg:联系我们。在页面中显示该链接的一种方法是使用字段渲染器,如下所示。
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;
}
}
}
上面的代码工作正常。我的问题是我是否可以使用Asp控件而不是FieldRenderer并将字段项中的链接值分配给转发器的项目数据绑定事件中链接的asp href属性。如果是,请告诉我怎么样?
谢谢, 苏哈斯
答案 0 :(得分:0)
是的,你可以。从我在您的示例中看到的,您将Field绑定到菜单。 您还可以将项目列表绑定到菜单。然后,您可以在转发器中检索项目的字段,如下所示:
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字段(显然你应该给出正确的字段名称而不是url。 LinkField有一些属性,如一般Sitecore文档中所述,可以在http://sdn.sitecore.net找到。