我正在尝试左侧导航,我可以获得父项的子项,但不能获得孙子项。主文件夹下有4个文件夹,每个文件夹有3个项目,全部使用相同的模板。
> Main /
Folder 1/
> item1
> item2
> item3
Folder 2/
> item1
> item2
> item3
Folder 3/
> item1
> item2
> item3
Folder 4/
> item1
> item2
> item3
我使用转发器开始:
<ul>
<asp:Literal ID="litFolder" runat="server" />
<asp:Repeater ID="leftNav" runat="server" OnItemDataBound="leftNav_ItemDataBound">
<HeaderTemplate>
<li>
</HeaderTemplate>
<ItemTemplate>
<asp:Repeater ID="rptsubleftNav" runat="server" OnItemDataBound="rptsubleftNav_ItemDataBound">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink ID="HLMainnav" runat="server"></asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</li>
</FooterTemplate>
</asp:Repeater>
</ul>
前端设置为使它们成为链接但当前它只是拉入文件夹,这实际上是使它们成为链接而不是文件夹中的项目。
public partial class LeftNav : System.Web.UI.UserControl
{
Item currentItem = Sitecore.Context.Item;
protected void Page_Load(object sender, EventArgs e)
{
leftNav.DataSource = Sitecore.Context.Database.GetItem("/sitecore/Main/").Children;
leftNav.DataBind();
}
public void leftNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
Item currentItem = (Item)e.Item.DataItem;
((Literal)e.Item.FindControl("litFolder")).Text = currentItem.Name;
if (currentItem != null)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
var subNav = e.Item.FindControl("rptsubleftNav") as Repeater;
if (subNav != null)
{
subNav.DataSource = currentItem.GetChildren();
subNav.DataBind();
currentItem.ToString();
HyperLink HLMainnav = (HyperLink)e.Item.FindControl("HLMainnav");
HLMainnav.NavigateUrl = LinkManager.GetItemUrl(currentItem);
HLMainnav.Text = currentItem.Name;
}
}
}
}
protected void rptsubleftNav_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
如何获得下一级别并将其设置为链接而不是文件夹?
(修订版) 我有文件夹和他们的孩子,但不显示名称。我也尝试使用&lt;%#Eval(“title”)%&gt;在前端,但它说Sitecore项目没有那个字段。所以不确定它如何正确显示项目但没有标题。
答案 0 :(得分:3)
您需要在leftNav
转发器ItemTemplate
标记内添加另一个转发器。
然后在leftNav_ItemDataBound
方法中,获取currentItem
的子项并将它们指定为新转发器的数据源。
以下是类似问题(Sitecore) Navigation with Subnavigation
那就是它。