【问题标题】:ASP.Net / MySQL Multi-level menuASP.Net / MySQL 多级菜单
【发布时间】:2013-07-08 12:10:22
【问题描述】:

我正在尝试通过从 MySQL 表中检索数据来生成菜单 Web 控件。我已将所有数据存储在 DataTable 中,但到目前为止我能够做到一个级别。我确定这里一定有一个递归函数,但我不知道如何添加到更深层次。

这是我到目前为止所做的:

    public Menus(Menu menu, int menuId)
    {
        Database db = new Database("localhost", "dotnetcms", "root");
        DataTable data;

        query = "SELECT * FROM links WHERE menu_id = " + menuId + " ORDER BY `order`, parent ASC";
        queryRows = "SELECT COUNT(*) FROM links WHERE menu_id = " + menuId + " ORDER BY `order`, parent ASC";

        data = db.AQuery(query);

        foreach (DataRow row in data.Rows)
        {
            if (row[3] == DBNull.Value)
            {
                menu.Items.Add(new MenuItem(row[1].ToString()));
            }
            else
            {
                AddChildMenus(row, menu.Items[Convert.ToInt32(row[3]) - 1]);
            }
        }
    }

    private void AddChildMenus(DataRow dr, MenuItem parent)
    {
        parent.ChildItems.Add(new MenuItem(dr[1].ToString()));
    }

【问题讨论】:

    标签: asp.net mysql menu multi-level


    【解决方案1】:

    MySQL 不支持递归选择。由于级别数量非常有限,您可以在单个查询中执行此操作,在父/子 ID 上重复将表与自身连接起来。

    但是嵌套集合模型可能是您最好的解决方案。

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2013-09-24
      相关资源
      最近更新 更多