0

谁能告诉我是否可以使用 ASP 控件而不是字段渲染器来显示字段。请参见下图。注意:我需要在Repeater的Item Databound Event中进行。

我有一个带有字段作为外部链接的模板。例如:联系我们。在页面中显示该链接的一种方法是使用字段渲染器,如下所示。

联系我们.aspx:

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

联系我们.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 属性。如果是,请告诉我如何?

谢谢, 苏哈斯

4

1 回答 1

0

是的你可以。从我在您的示例中看到的内容,您将字段绑定到菜单。您还可以将项目列表绑定到您的菜单。然后,您可以像这样在转发器中检索项目的字段:

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 具有多个属性,如可在 @ http://sdn.sitecore.net找到的通用 Sitecore 文档中所述。

于 2012-05-22T12:43:22.580 回答