Frage

Ist es möglich, ein ASP.NET web.sitemap mit einem jQuery zu verwenden < a href = "http://users.tpg.com.au/j_birch/plugins/superfish/" rel = "noreferrer"> Superfish Menü?

Wenn nicht, gibt es keine Standards basierten Browser Agnostiker Plugins zur Verfügung, die die Arbeit mit der web.sitemap Datei?

War es hilfreich?

Lösung

ich diese Frage gefunden, während für die gleiche Antwort suchen ... alle sagt es ist möglich, aber niemand gibt die tatsächliche Lösung! Ich scheine zu haben, es jetzt so arbeiten dachte, ich würde meine Erkenntnisse veröffentlichen ...

Dinge, die ich benötigt:

Meine fertigen Masterpage.master hat folgende 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>

Was ist im Grunde das ganze Zeug für das jQuery Superfish Menü benötigt, um zu arbeiten. Im Inneren der Seite sieht wie folgt aus (wo das Menü geht) (basierend auf diese Anweisungen ):

<asp:SiteMapDataSource ID="SiteMapDataSource" runat="server"
    ShowStartingNode="false" />
<asp:Menu ID="Menu1" runat="server" 
    DataSourceID="SiteMapDataSource"
    Orientation="Horizontal" CssClass="sf-menu">
</asp:Menu>

auf der Dokumentations-Based, erscheint dies wie es funktionieren soll - aber es funktioniert nicht. Der Grund dafür ist, dass die CssClass="sf-menu" überschrieben werden, wenn das Menü wiedergegeben wird und der <ul> Tag bekommt eine class="AspNet-Menu". Ich dachte, die Linie $('ul.AspNet-Menu').superfish(); helfen würde, aber es kam nicht.

Eine weitere Sache,

Obwohl es ein Hack (und bitte jemand mich auf die richtige Lösung) konnte ich es zum Laufen bringen, indem die superfish.css-Datei öffnen und suchen und ersetzen sf-Menü mit ASPnet-Menü ... und voila! das Menü erscheint. Ich dachte, es würde einige Konfiguration in der asp:Menu Steuerungseinstellung, wo ich die <ul> Klasse einstellen könnte aber fand keine Hinweise über Google.

Andere Tipps

Ja, es ist durchaus möglich.

Menüsteuerung und jQuery 1.2.6 mit dem Superfish Plugin:

Ich habe es mit der ASP verwendet. Beachten Sie, müssen Sie die ASP.NET 2.0 CSS freundliche Steuerung Adapter .

ASP.NET erzeugt die ASP: Menüsteuerung als Tabellenlayout. Die CSS freundliche Steuerung Adapter machen ASP.NET die ASP generiert. Die Menüsteuerung als UL / LI Layout innerhalb eines div

Das wird eine einfache Integration des jQuery und Superfish Plugin erlauben, weil die Superfish Plugin auf einem UL / LI Layout setzt.

Es sieht aus wie Sie ein UL für Superfish generieren müssen. Sie sollen diese von Ihrer Website Karte mit ASP.Net der Lage sein, zu tun. Ich denke, die Site-Map Kontrolle etwas tun wird. Wenn nicht, sollte es ziemlich trivial sein, die Site-Map von C # direkt aufrufen und das DOM programmatisch zu erzeugen. Sie könnten eine Benutzersteuerung bauen, dies zu tun, oder tun es in der Master-Seite.

Schauen Sie sich diesem MSDN-Artikel , wie die programmatisch aufzählen zu Knoten in Ihrem Site-map.

Denken Sie daran, CSS-Klassen für NonLink Elemente hinzuzufügen. Superfish CSS-Elemente acccont nicht für sie. Und wenn Sie wie ich sind und root-Menü haben, die keine Links sind, dann macht es schrecklich. Nur ASPnet-Menü-NonLink Elemente in die superfish.css Datei hinzufügen, und es sollte machen in Ordnung.

Die Sitemap Kontrolle sollte auf alle hierarchischen Daten gebunden Steuerelement binden können. Ich bin nicht vertraut mit Superfish, aber ich weiß, es gibt viele jQueryish steuert da draußen, dies zu tun.

habe ich ein nettes kleines Beispielprojekt Sie unter http://simplesitemenu.codeplex.com/

Es ist eine Verbundsteuerung, die einen verschachtelte UL / LI-Eintrag aus Ihrer Sitemap erzeugt.

Genießen Sie!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top