0

我正在尝试使用 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))

如有必要,我愿意更改数据库表结构,并且基本上会做任何其他事情来实现这一点。

感谢您的任何意见,非常感谢。

4

1 回答 1

2

这种表示分层数据的方法对人类来说很容易理解,但很难从中提取数据,因为它需要递归来提取完整​​的层次结构。某些 SQL 风格的命令可以为您执行此操作,但这就是幕后发生的事情。

我建议您阅读SQL 中的 More Trees & Hierarchies,并使用它解释的物化路径方法重构您的模式。它很容易查询并且可以很好地扩展。

于 2008-11-26T19:00:48.347 回答