2012-05-15 185 views
0

我正在根據服務器上的文件結構生成一個菜單。所以,這是文件結構:從文件結構生成菜單

Videos 
    Reports 
     Customers 
    SetUp 
     Customers 
     Products 

所以,我寫了這個代碼

System.IO.DirectoryInfo RootDir = new System.IO.DirectoryInfo(Server.MapPath("~/Videos")); 
RadMenuItem RootNode = OutputDirectory(RootDir, null); 
videoMenu.Items.Add(RootNode); 

在輸出目錄,我會遍歷它們並返回它們。所以,現在我想要看起來像這樣的輸出:

Reports 
    Customers 
SetUp 
    Customers 
    Products 

我不希望視頻成爲父級別。 INstead希望Reports和Setup成爲頂級用戶。你能幫我麼。

+0

一個什麼菜單?的WinForms? WPF?網?什麼樣的菜單?用樹形視圖製作的「常規」菜單或「菜單」? –

+0

你在建什麼菜單?的WinForms? WPF?網? –

+0

'Server.MapPath()'暗示ASP.NET。 – jrummell

回答

0

聽起來像你想要添加幾個父級節點到你的RadMenu(報告,設置等),而不是僅僅添加單個RootNode。無論您的OutputDirectory方法在做什麼,都要使其將「視頻」的子項作爲IEnumerable節點返回,然後添加這些節點而不是RootNode。

0

您可能需要一個遞歸函數。類似這樣的:

void Main() 
{ 
    var dirs = new DirectoryInfo(Server.MapPath("~/Videos")).GetDirectories(); 
    CreateTree(videoMenu.Items, dirs): 
} 

public void CreateTree(IList<RadMenuItem> parantCollection, IEnumerable<DirectoryInfo> parentDirs) 
{ 
    foreach (var dir in parentDirs) 
    { 
     var node = OutputDirectory(dir, null); 
     parantCollection.Add(node); 
     CreateTree(node.Items, dir.GetDirectories()); 
    } 
}