jQuery Superfishメニュー でASP.NET web.sitemapを使用することは可能ですか?
そうでない場合、web.sitemap ファイルで動作する標準ベースのブラウザーに依存しないプラグインはありますか?
jQuery Superfishメニュー でASP.NET web.sitemapを使用することは可能ですか?
そうでない場合、web.sitemap ファイルで動作する標準ベースのブラウザーに依存しないプラグインはありますか?
同じ答えを探しているときにこの質問を見つけました...誰もが可能だと言っていますが、誰も実際の解決策を教えてくれません! 現在は機能しているようですので、調査結果を投稿したいと思いました...
必要なもの:
CSS Friendly Control Adaptersは DLL と .browsers ファイルをダウンロードします (それぞれ /bin と /App_Browsers フォルダーに)
ASP.NET SiteMap (web.config の .sitemap XML ファイルとsiteMap
プロバイダー エントリ)
私の完成品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-menuをAspNet-Menuに置き換えることで動作させることができました... そして出来上がり! メニューが現れました。asp:Menu
クラスを設定できるコントロールに構成設定があると思いましたが、<ul>
Google経由でヒントが見つかりませんでした。
はい、完全に可能です。
ASP:Menu コントロールと jQuery 1.2.6 を Superfish プラグインと共に使用しました。ASP.NET 2.0 CSS Friendly Control Adaptersが必要になることに注意してください。
ASP.NET は、ASP:Menu コントロールをテーブル レイアウトとして生成します。CSS Friendly Control Adapter は、ASP.NET に ASP:Menu コントロールを div 内の UL/LI レイアウトとして生成させます。
Superfish プラグインは UL/LI レイアウトに依存しているため、これにより jQuery と Superfish プラグインを簡単に統合できます。
Superfish の UL を生成する必要があるようです。これは、サイト マップから ASP.Net で実行できるはずです。サイト マップ コントロールは、このようなことを行うと思います。そうでない場合は、サイト マップを C# から直接呼び出して、プログラムで DOM を生成するのは簡単です。これを行うユーザー コントロールを作成するか、マスター ページで行うことができます。
サイト マップ内のノードをプログラムで列挙する方法については、この MSDN の記事を参照してください。
NonLink要素のcssクラスを追加することを忘れないでください。Superfishcss要素はそれらに対応していません。そして、あなたが私のようで、リンクではないルートメニューがある場合、それはひどくレンダリングされます。AspNet-Menu-NonLink要素をsuperfish.cssファイルに追加するだけで、正常にレンダリングされます。
http://simplesitemenu.codeplex.com/で使用できるきちんとした小さなサンプル プロジェクトを作成しました。
これは、サイトマップからネストされた UL/LI リストを生成する複合コントロールです。
楽しみ!
SiteMapDataSource コントロールは、任意の階層データ バインド コントロールにバインドできる必要があります。私はスーパーフィッシュに詳しくありませんが、これを行うための jQueryish コントロールがたくさんあることは知っています。