Czy można użyć ASP.NET web.sitemap z menu jQuery Superfish?jQuery Menu i ASP.NET Sitemap
Jeśli nie, to czy są dostępne standardowe wtyczki agnostyczne przeglądarki, które działają z plikiem web.sitemap?
Czy można użyć ASP.NET web.sitemap z menu jQuery Superfish?jQuery Menu i ASP.NET Sitemap
Jeśli nie, to czy są dostępne standardowe wtyczki agnostyczne przeglądarki, które działają z plikiem web.sitemap?
Znalazłem to pytanie, szukając tej samej odpowiedzi ... wszyscy: mówi: jest to możliwe, ale nikt nie daje rzeczywistego rozwiązania! I wydaje się, że to działa teraz tak myślałem, że będę pisać moje wyniki ...
Czego potrzeba:
CSS Friendly Control Adaptors pobierania DLL i .browsers (odpowiednio do folderów/bin i/App_Browsers)
ASP.NET SiteMap (plik .sitemap XML i siteMap
dostawca e nSpróbuj w web.config)
My zakończeniu Masterpage.master
ma następującą head
tag:
<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>
który jest w zasadzie wszystkie rzeczy potrzebne do menu jQuery Superfish do pracy. Wewnątrz strona (gdzie menu idzie) wygląda następująco (na podstawie these instructions):
<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server"
ShowStartingNode="false" />
<asp:Menu ID="Menu1" runat="server"
DataSourceID="SiteMapDataSource"
Orientation="Horizontal" CssClass="sf-menu">
</asp:Menu>
Na podstawie dokumentacji, to wydaje się, że powinno działać - ale tak nie jest. Powodem jest to, że CssClass="sf-menu"
zostanie nadpisany, gdy Menu zostanie wyświetlone, a znacznik <ul>
otrzyma numer class="AspNet-Menu"
. Pomyślałem, że linia pomoże, ale tak się nie stało.
jeszcze jedno
Chociaż jest to hack (i proszę ktoś mi punkt do prawidłowego rozwiązania) udało mi się dostać to działa otwierając przeszukiwanie superfish.css
pliku i i zastąpienieSF- menu z AspNet-Menu ... i voila! pojawiło się menu. Myślałem, że będzie jakieś ustawienie konfiguracyjne w sterowaniu asp:Menu
, gdzie mogę ustawić klasę <ul>
, ale nie znalazłem żadnych wskazówek za pośrednictwem google.
Kontrolka SiteMapDataSource powinna być w stanie powiązać dowolny hierarchiczny kontroler związany z danymi. Nie jestem zaznajomiony z superfish, ale wiem, że istnieje wiele formantów jQueryish, aby to zrobić.
Wygląda na to, że trzeba wygenerować UL dla Superfish. Powinieneś być w stanie to zrobić z ASP.Net z mapy witryny. Myślę, że kontrola mapy witryny zrobi coś takiego. Jeśli nie, powinno być dość banalnie, aby wywołać mapę witryny bezpośrednio z C# i programowo wygenerować DOM. Możesz zbudować kontrolę użytkownika, aby to zrobić, lub zrobić to na stronie wzorcowej.
Sprawdź, jak this MSDN article programowo wyliczyć węzły na mapie witryny.
Tak, jest to całkowicie możliwe.
Użyłem go z ASP: Sterowanie menu i jQuery 1.2.6 z wtyczką Superfish. Uwaga, będziesz potrzebować ASP.NET 2.0 CSS Friendly Control Adapters.
Program ASP.NET generuje kontrolkę ASP: Menu jako układ tabeli. Adapter CSS Friendly Control sprawi, że ASP.NET będzie generował kontrolkę ASP: Menu jako układ UL/LI wewnątrz elementu div.
Umożliwi to łatwą integrację wtyczki jQuery i Superfish, ponieważ wtyczka Superfish opiera się na układzie UL/LI.
Pamiętaj, aby dodać klasy css dla elementów NonLink. Superfish elementów css nie accement dla nich. A jeśli jesteś podobny do mnie i masz menu root, które nie są linkami, to strasznie. Wystarczy dodać elementy AspNet-Menu-NonLink do pliku superfish.css i powinien on być renderowany poprawnie.
I stworzył schludny mały przykładowy projekt można wykorzystać w http://simplesitemenu.codeplex.com/
Jest to kompozyt kontrola który generuje zagnieżdżone UL/li wpis z witryny.
Ciesz się!
Fantastyczne! Szukałem odpowiedzi od pierwszego zadania tego pytania. –
Załadowałem przykładowy projekt z wszystkimi wymaganymi plikami tutaj http://conceptdevelopment.net/Fun/Superfish – Conceptdev
Jeśli chodzi o klasy CSS, masz rację, że nie można ich konfigurować. Nazwy klas są zakodowane na stałe w kodzie CSSFriendly. Możesz pobrać źródło, zmodyfikować klasy i odbudować biblioteki DLL, jeśli naprawdę chcesz, ale myślę, że twoja droga jest znacznie prostsza. –