【发布时间】:2015-01-15 08:02:41
【问题描述】:
我已经实现了 Web 部件以支持嵌套中继器,以便使用 kentico 8 实现大型菜单
我所做的是在 Web 部件中的转发器之后创建的
<div>
<cms:CMSRepeater ID="CMSRepeater6" runat="server" Path="/%" ClassNames="CMS.MenuItem" OrderBy="NodeOrder" WhereCondition="DocumentMenuItemHideInNavigation = 0 AND Published = 1 AND MenuItemGroup='Top'" MaxRelativeLevel="1" DelayedLoading="true" OnItemDataBound="CMSRepeater6_ItemDataBound" >
<ItemTemplate>
<div>
<li>
<h3><a href="<%# Eval("NodeAliasPath")%>"><%# Eval("DocumentName")%></a></h3>
</li>
</div>
<cms:CMSRepeater ID="repMegaMenuLevel1" runat="server" Path="/%" ClassNames="CMS.MenuItem" OrderBy="NodeOrder">
<ItemTemplate>
</ItemTemplate>
</cms:CMSRepeater>
</ItemTemplate>
</cms:CMSRepeater>
</div>
并尝试在代码级别绑定转换
protected void CMSRepeater6_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
RepeaterItem item = e.Item;
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
var dr = item.DataItem as DataRowView;
string menuType = dr["MenuItemType"].ToString();
if (!string.IsNullOrEmpty(menuType))
{
var rptMegaMenuItem = item.FindControl("repMegaMenuLevel1") as CMSRepeater;
if (menuType.Equals("1"))
{
rptMegaMenuItem.TransformationName = "Content.PageProductCategory.MagaMenu11";
rptMegaMenuItem.WhereCondition = "MenuItemType = 1 AND MenuItemGroup='Top' AND DocumentMenuItemHideInNavigation = 0 ";
rptMegaMenuItem.NestedControlsID = "repMegaMenuLevel3";
rptMegaMenuItem.DelayedLoading = true;
}
}
}
}
转换代码:
<cms:CMSRepeater ID="repMegaMenuLevel3" runat="server" DataBindByDefault="false" EnableViewState="false" ClassNames="Content.PageProductCategory;CMS.MenuItem" MaxRelativeLevel="1" Path="/What-we-do/%">
<ItemTemplate>
<li><%# Eval("DocumentName")%></li>
<li><%# Eval("DocumentNamePath")%></li>
<li><%# Eval("ClassName")%></li>
</ItemTemplate>
</cms:CMSRepeater>
<script runat="server">
protected override void OnInit(EventArgs e) {
repMegaMenuLevel3.Path = "/What-we-do/%";
repMegaMenuLevel3.ClassNames="Content.PageProductCategory";
repMegaMenuLevel3.ReloadData(true);
}
</script>
问题是中继器 repMegaMenuLevel3 总是返回文档名称作为父级 (CMS.MenuItem) DocumentName 即“我们做什么”而不是来自 content.PageProductCategory,我尝试以不同的方式设置路径,但没有运气
【问题讨论】: