2008-11-26 59 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

相关问题