我正在尝试使用Suckerfish css菜单和Jquery从表创建菜单。我使用它作为我的参考:Suckerfish menu with ASP.NET and JQuery并且我使用手动提供的链接(非常类似于文章)。
我遇到问题的是编写递归函数以从数据库中获取菜单项并在适当的层次结构中创建新的菜单项。我的数据库表如下所示:
表格菜单
MENUID PARENTID 链接 文本
这个想法是,如果一个项目是父级项目,则MenuID和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 :(得分:2)
表示分层数据的方法对于人类来说很容易理解,但很难从中提取数据,因为它需要递归来提取完整的层次结构。有些SQL的命令会为你做这个,但这就是幕后的情况。
我建议您阅读More Trees & Hierarchies in SQL,并使用它解释的物化路径方法重构您的架构。它很容易查询和扩展。