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

動画を親レベルにしたくありません。代わりに、レポートとセットアップを一番上にしたかったのです。手伝ってくれませんか。

4

2 に答える 2

0

単一のRootNodeを追加するだけでなく、RadMenu(レポート、セットアップなど)に複数の親レベルのノードを追加したいようです。メソッドが何をOutputDirectoryしていても、「Videos」の子をノードのIEnumerableとして返すようにし、RootNodeではなくそれらを追加します。

于 2012-05-15T19:35:08.467 に答える
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());
    }
}
于 2012-05-15T19:44:41.237 に答える