Тонкая настройка ASP.NET Menu, как мега выпадающий - PullRequest
4 голосов
/ 28 февраля 2011

Платформа:
Разработка веб-сайтов на ASP.NET 4.0 (веб-формы) с использованием C #.

Ситуация:
Мой визуализированный элемент управления ASP.NET Menu является горизонтальным и имеет три уровня данных. И я установил StaticDisplayLevels = "1", чтобы в меню отображались данные уровня 1 по горизонтали и перестановка уровня 1, в меню отображались данные уровня 2 и перестановка уровня 2, в меню отображались данные уровня 3.

Требования:
Чтобы отобразить данные уровня 2 и уровня 3 в одном списке, дочерние элементы первого уровня 2 (если есть) отображаются под данными первого уровня 2. Затем наступает второй уровень2 и его дети (если есть) и так далее.

Want a display like the first one. ASP.NET Menu control displays something like second Рассмотрите изображение выше. То, что я хотел бы иметь, это дисплей, подобный показанному слева. Но элемент управления ASP.NET Menu отображает его как изображение на правой стороне.

Я искал высоко и низко в сети решение. Я даже попытался заменить разметку сгенерированного элемента управления asp.net, используя событие DataBound в Menu, а затем внедрить в него хакер javascript . Я преуспел в этом, но ему не хватает возможности повторного использования.

Я хотел бы иметь способ реализации многократно используемого элемента управления ASP.NET Menu со статическим уровнем 2 (и уровнем 3) после динамического уровня 1, который действует как мегадропдаун. Я уверен, что должен быть путь, и я иду неправильным путем. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 14 марта 2011

Не удалось получить простых решений.

Обходным путем было преобразование иерархической карты сайта в таблицу с идентификатором родителя для родительского xml и 0, если родительского элемента нет. Затем я программно создал меню asp: на основе кода из этих данных

0 голосов
/ 28 февраля 2011

Вы должны установить уровень меню в элементе управления меню на 3. Пожалуйста, отметьте это

MaximumDynamicDisplayLevels="3"

<asp:Menu ID="Menu1" runat="server" StaticDisplayLevels="1" 
MaximumDynamicDisplayLevels="3" DataSourceID="SiteMapDataSource1" 
Orientation="Horizontal" OnDataBound="Menu1_DataBound">
</asp:Menu>
...