Создание трехуровневого меню ASP.NET с помощью SiteMap, как мне это сделать? - PullRequest
1 голос
/ 10 февраля 2010

Я хочу создать трехуровневое меню, у меня сегодня есть рекурсивная функция, которая работает с тремя уровнями. Но дело в том, как вывести третий рычаг? Используя два повторителя, мне удалось получить первые два уровня через свойство ChildNodes. Но это только дает мне второй уровень. Что делать, если хотите третий уровень? Пример кода ниже. Как мне получить третий уровень? :)

<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>

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Я бы создал пользовательский серверный элемент управления и рекурсивно проанализировал бы карту сайта. Это даст вам больше контроля над рендерингом и позволит вам указать дополнительные пользовательские атрибуты для узлов карты сайта.

1 голос
/ 10 февраля 2010

Я бы использовал OnItemCreatedEvent ретранслятора, чтобы зарегистрировать событие OnItemDataBound каждого ретранслятора, а затем соответствующим образом связать данные. Не подходит ли управление меню asp:? Почему повторители?

...