0

MySQL テーブルからデータを取得して、メニュー Web コントロールを生成しようとしています。すべてのデータを DataTable に保存しましたが、これまでのところ 1 つのレベルしかできません。ここのどこかに再帰関数があるはずですが、より深いレベルに追加する方法がわかりません。

これまでに行ったことは次のとおりです。

    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()));
    }
4

1 に答える 1