2008-09-19 77 views

回答

29

我在尋找相同的答案時發現此問題...大家這是可能的,但沒有人給出實際的解決方案!我似乎現在工作,所以想我會後我發現......

的事情,我需要:

我完成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的快魚菜單工作的所有東西。裏面的頁面(如菜單進入)看起來像這樣(基於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> 

,這似乎像它應該工作 - 但事實並非如此。原因是當呈現菜單並且<ul>標籤獲得class="AspNet-Menu"時,CssClass="sf-menu"會被覆蓋。我認爲行$('ul.AspNet-Menu').superfish();會有所幫助,但它沒有。

一件事

雖然這是一個黑客(並請有人點我到正確的解決方案),我能得到它的工作通過打開superfish.css文件和搜索和替換SF-菜單AspNet-Menu ...和瞧!菜單出現了。我認爲在asp:Menu控件中會有一些配置設置,我可以設置<ul>類,但沒有通過谷歌找到任何提示。

+0

太棒了!自從首先提出這個問題以來,我一直在尋找答案。 – 2009-03-15 15:44:14

0

SiteMapDataSource控件應該能夠綁定到任何分層數據綁定控件。我對superfish並不熟悉,但我知道有很多jQuery控件可以做到這一點。

2

看起來你需要爲Superfish生成一個UL。你應該可以在你的網站地圖上用ASP.Net來做到這一點。我認爲網站地圖控件會做這樣的事情。如果不是,直接從C#調用站點地圖並以編程方式生成DOM應該是相當簡單的。您可以構建一個用戶控件來執行此操作,或者在母版頁中執行此操作。

檢查出this MSDN article如何以編程方式枚舉您的站點地圖中的節點。

3

是的,這是完全可能的。

我用它與ASP:Menu控件和jQuery 1.2.6與Superfish插件。請注意,您將需要ASP.NET 2.0 CSS Friendly Control Adapters

ASP.NET生成ASP:Menu控件作爲表格佈局。 CSS友好控制適配器將使ASP.NET生成ASP:菜單控件,作爲div內的UL/LI佈局。

這將允許輕鬆整合jQuery和Superfish插件,因爲Superfish插件依賴於UL/LI佈局。

1

記得爲NonLink元素添加css類。 Superfish的CSS元素不適合他們。如果你像我一樣,並且擁有不是鏈接的根菜單,那麼它會渲染可怕。只需將AspNet-Menu-NonLink元素添加到superfish.css文件中,它就可以很好地呈現出來。