2008-11-26 58 views
0

我試圖從使用Suckerfish css菜單和Jquery的表中創建菜單。我使用這個作爲我的參考:Suckerfish menu with ASP.NET and JQuery和我有它手動提供的鏈接工作(很像在文章中)。使用ASP.NET,JQuery和Suckerfish構建數據庫驅動的菜單

我遇到的問題是編寫遞歸函數以從數據庫獲取菜單項並在正確的層次結構中創建新的菜單項。我的數據庫表看起來像這樣:

表菜單


菜單ID PARENTID 鏈接 文本

的想法是,如果一個項目是一個父級項目的菜單ID和PARENTID是同樣,如果它是一個孩子,它將在ParentID字段中具有它的父級的MenuID。我需要創建一個可以順利通過,並找到所有的孩子爲父母的函數(可能是幾級),並把它替換這樣的手冊條目:

 Dim Foo As New MenuItem("#", "Foo", Me) 
     Items.Add(Foo) 
     Foo.Items.Add(New MenuItem("#", "1", Me)) 
     Foo.Items.Add(New MenuItem("#", "2", Me)) 
     Foo.Items.Add(New MenuItem("#", "3", Me)) 
     Foo.Items.Add(New MenuItem("#", "4", Me)) 

我願意改變數據庫表結構,如果有必要,基本上做任何事情來實現這一目標。

感謝您的任何意見和建議,非常感謝。

+0

您正在使用哪個數據庫?不同的供應商有不同的擴展,可以幫助解決您的問題。 – Min 2008-11-26 19:29:56

回答

2

表示分層數據的方法很容易理解,但很難從中提取數據,因爲它需要遞歸來提取完整​​的層次結構。一些SQL的命令會爲你做這些,但這就是幕後發生的事情。

我建議您閱讀More Trees & Hierarchies in SQL,並使用它解釋的物化路徑方法重構您的模式。很容易查詢和擴展真的很好。

+0

謝謝OrbMan,我很享受這篇文章。我喜歡你在答覆開始時提到的內容,它很容易理解但很難實現 - 這一直是我的經驗。 乾杯。 – 2008-11-26 22:08:05

相關問題