【问题标题】:Building a database driven menu with ASP.NET, JQuery and Suckerfish使用 ASP.NET、JQuery 和 Suckerfish 构建数据库驱动的菜单
【发布时间】:2008-11-26 18:26:37
【问题描述】:

我正在尝试使用 Suckerfish css 菜单和 Jquery 从表中创建菜单。我用这个作为我的参考:Suckerfish menu with ASP.NET and JQuery 我让它与手动提供的链接一起工作(很像文章中的)。

我遇到的问题是编写递归函数以从数据库中获取菜单项并在适当的层次结构中创建新菜单项。我的数据库表如下所示:

表格菜单


菜单 ID 家长编号 关联 文字

如果一个项目是父级项目,则 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))

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

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

【问题讨论】:

  • 您使用的是哪个数据库?不同的供应商有不同的扩展程序可以帮助您解决问题。

标签: asp.net jquery recursion menu


【解决方案1】:

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

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

【讨论】:

  • 感谢 OrbMan,我很喜欢这篇文章。我喜欢您在回复开头提到的内容,即易于理解但难以实施——这一直是我的经验。干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2011-06-24
  • 2010-12-30
  • 2011-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多