2013-07-08 37 views
0

我試圖通過從MySQL表中檢索數據來生成菜單Web控件。我已經將所有數據存儲在一個DataTable中,但到目前爲止,我可以做到一個級別。我確定在這裏肯定有一個遞歸函數,但我不知道如何添加到更深層次。ASP.Net/MySQL多級菜單

這是我到目前爲止已經完成:

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

回答

0

MySQL不支持遞歸選擇。如果數量級別非常有限,則可以在單個查詢中完成,並在父/子ID上反覆加入表格。

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