2012-05-15 4 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는 보고서 및 설치 프로그램이 맨 위에 오길 원했습니다. 저를 도와주세요.

+0

무엇을위한 메뉴입니까? WinForms? WPF? 편물? 어떤 종류의 메뉴? 트리보기로 만든 "일반"메뉴 또는 "메뉴"? –

+0

메뉴 구성은 무엇입니까? Winforms? WPF? 편물? –

+0

'Server.MapPath()'는 ASP.NET을 의미합니다. – jrummell

답변

0

단일 RootNode를 추가하기보다는 여러 상위 수준 노드를 RadMenu (보고서, 설정 등)에 추가하려는 것 같습니다. 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()); 
    } 
}