从文件结构构建菜单

时间:2012-05-15 19:25:47

标签: c# asp.net rad-controls

我正在根据服务器上的文件结构构建菜单。所以,这是文件结构:

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希望报告和设置位于顶部。能帮帮我吗。

2 个答案:

答案 0 :(得分:0)

听起来你想要将几个父级节点添加到RadMenu(Reports,Setup等),而不是仅添加单个RootNode。无论你的OutputDirectory方法做了什么,让它将“视频”的子节点作为IEnumerable节点返回,并添加那些而不是RootNode。

答案 1 :(得分: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());
    }
}