我想创建一个三级菜单,我现在有一个递归函数,可以在三个级别上使用。但问题是我如何输出第三杆?使用两个中继器,我设法通过ChildNodes属性获得前两个级别。但那只能给我第二个层次。如果想要第三级呢?下面的示例代码。我如何获得第三级? :)用SiteMap创建三级ASP.NET菜单,我该怎么做?
<asp:Repeater ID="FirstLevel" DataSourceID="SiteMapDataSource" runat="server" EnableViewState="false">
<ItemTemplate>
<li class="top">
<a href='/About/<%#Eval("Title")%>.aspx' class="top_link"><span class="down"><%#Eval("Title")%></span><!--[if gte IE 7]><!--></a><!--<![endif]-->
<asp:Repeater runat="server" ID="SecondLevel" DataSource='<%#((SiteMapNode)Container.DataItem).ChildNodes%>'>
<HeaderTemplate><!--[if lte IE 6]><table><tr><td><![endif]--><ul class="sub"></HeaderTemplate>
<ItemTemplate>
<li>
<a href='<%#((string)Eval("Url")).Replace("~", "")%>' style="text-align: left;"><%#Eval("Title")%></a>
Third repeater here?
</li>
</ItemTemplate>
<FooterTemplate></ul><!--[if lte IE 6]></td></tr></table></a><![endif]--></FooterTemplate>
</asp:Repeater>
</li>
</ItemTemplate>
</asp:Repeater>
这已经完成了,我有一个SiteMapProvider类继承自StaticSiteMapProvider并递归地构建站点地图。但问题是我如何渲染它三个级别? Menu控件是否创建了糟糕的表格等?我认为这就是为什么它第一次被倾倒的原因:) – jinxen 2010-02-11 07:02:00
我建议创建一个自定义的服务器控件,而不是一个站点地图提供程序。对于简单的站点地图,ASP.NET菜单控件将正常工作。使用CSS Friendly Adapters将菜单呈现为列表,http://cssfriendly.codeplex.com。 – 2010-02-11 17:07:13