




Элемент управления SiteMapDataSource должен иметь возможность связываться с любым элементом управления с привязкой к иерархическим данным. Я не знаком с superfish, но знаю, что для этого существует множество элементов управления jQueryish.
Похоже, вам нужно создать UL для Superfish. Вы должны иметь возможность сделать это с помощью ASP.Net на карте вашего сайта. Я думаю, что элемент управления картой сайта будет делать что-то вроде этого. Если нет, вызовите карту сайта непосредственно из C# и сгенерируйте DOM программно. Для этого вы можете создать пользовательский элемент управления или сделать это на главной странице.
Ознакомьтесь с эта статья MSDN о том, как программно перечислить узлы на карте вашего сайта.
Да, это вполне возможно.
Я использовал его с элементом управления ASP: Menu и jQuery 1.2.6 с плагином Superfish. Обратите внимание, вам понадобится Адаптеры управления, поддерживающие CSS ASP.NET 2.0.
ASP.NET создает элемент управления ASP: Menu как макет таблицы. CSS Friendly Control Adapter заставит ASP.NET генерировать элемент управления ASP: Menu как макет UL / LI внутри div.
Это позволит легко интегрировать плагин jQuery и Superfish, поскольку плагин Superfish использует макет UL / LI.
Я нашел этот вопрос, ища тот же ответ ... все говорит это возможно, но никто не дает реального решения! Кажется, теперь он работает, поэтому решил опубликовать свои выводы ...
Вещи, которые мне понадобились:
CSS-дружественные адаптеры управления загружает файлы DLL и .browsers (в папки / bin и / App_Browsers соответственно)
Карта сайта ASP.NET (XML-файл .sitemap и запись поставщика siteMap в web.config)
Мой готовый Masterpage.master имеет следующий тег head:
<head runat = "server">
<script type = "text/javascript" src = "/script/jquery-1.3.2.min.js"></script>
<script type = "text/javascript" src = "/script/superfish.js"></script>
<link href = "~/css/superfish.css" type = "text/css" rel = "stylesheet" media = "screen" runat = "server" />
<script type = "text/javascript">
$(document).ready(function() {
$('ul.AspNet-Menu').superfish();
});
</script>
</head>
Это практически все, что нужно для работы меню jQuery Superfish. Внутри страницы (где идет меню) выглядит так (на основе эти инструкции):
<asp:SiteMapDataSource ID = "SiteMapDataSource" runat = "server"
ShowStartingNode = "false" />
<asp:Menu ID = "Menu1" runat = "server"
DataSourceID = "SiteMapDataSource"
Orientation = "Horizontal" CssClass = "sf-menu">
</asp:Menu>
Судя по документации, это ДОЛЖНО работать, но это не так. Причина в том, что CssClass = "sf-menu" перезаписывается при отображении меню, а тег <ul> получает class = "AspNet-Menu". Я думал, что линия $('ul.AspNet-Menu').superfish(); поможет, но этого не произошло.
ЕЩЕ КОЕ-ЧТО
Хотя это взлом (и, пожалуйста, укажите мне правильное решение), я смог заставить его работать, открыв файл superfish.css и поиск и заменаSF-меню с помощью AspNet-Меню ... и вуаля! появилось меню. Я думал, что в элементе управления asp:Menu будет какой-то параметр конфигурации, где я мог бы установить класс <ul>, но не нашел никаких подсказок через Google.
Я загрузил образец проекта со всеми необходимыми файлами сюда conceptdevelopment.net/Fun/Superfish
Что касается классов CSS, вы правы, что они не настраиваются. Имена классов жестко запрограммированы в коде CSSFriendly. Вы можете загрузить исходный код, изменить классы и перестроить библиотеки DLL, если действительно захотите, но я думаю, что ваш способ намного проще.
Это отлично сработало - одна проблема, с которой я столкнулся, заключалась в том, что изображения стрелок раскрывающегося списка из superfish не отображались. Это связано с тем, что при использовании элемента управления SiteMapDataSource добавляется WebResource.axd, который имеет более высокую специфичность, чем свойства superfish.css. Я не мог понять, как остановить добавление файла WebResource.axd, но вы можете изменить .sf-sub-indicator в superfish.css на «ul.AspNet-Menu .sf-sub-indicator» и затем добавьте к классу "height: 10px! important". Теперь вы должны увидеть изображения. Приветствуются лучшие решения
Жаль, что для этого вам понадобятся переходники. Эта библиотека адаптеров никогда не работала должным образом для некоторых элементов управления, и она официально мертва уже несколько лет.
Не забудьте добавить классы css для элементов NonLink. Элементы Superfish css для них не подходят. И если вы похожи на меня, и у вас есть корневое меню, которое не является ссылками, тогда оно выглядит ужасно. Просто добавьте элементы AspNet-Menu-NonLink в файл superfish.css, и он должен отображаться нормально.
Я создал изящный образец проекта, который вы можете использовать на http://simplesitemenu.codeplex.com/.
Это составной элемент управления, который генерирует вложенный список UL / LI из вашей карты сайта.
Наслаждаться!
Фантастика! Я искал ответ с тех пор, как впервые задал этот вопрос.