0

にデータを入力する必要がtreeviewありasp.net、ツリービューにすべてのノードと子ノードを挿入する再帰関数が必要です。

私には2つの方法があります:

GetRootPage()

GetPagesByParent(Page parent)->IEnumerable<Page>ページの子を持つ a を返します。

ツリーを構築するための再帰的ロジックを手伝ってくれる人はいますか?

4

1 に答える 1

1

これが宿題の質問でないことを心から願っています。そうは言っても、次のようなものから始める必要があります。

免責事項: 私はこれをテストまたは検証していません。大まかな例としてのみ役立つことを意図しています

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        var pages = GetPagesByParent(Page);
        if (pages.Count() > 0)
        {
            var roots = pages.Where(p => p.Parent == null);
            foreach (var root in roots)
            {
                //add the root nodes to the tree
                var rootNode = new TreeNode(root.Title);
                tree.Nodes.Add(rootNode);

                //kick off the recursive population
                PopulateChildNodes(pages, root, rootNode);
            }
        }
    }
}

protected void PopulateChildNodes(IEnumerable<Page> pages, Page parent, TreeNode parentNode)
{
    var childPages = pages.Where(p => p.Parent == parent);
    foreach (var page in pages)
    {
        var pageNode = new TreeNode(page.Title);
        parentNode.Nodes.Add(pageNode);

        //populate the children of the pageNode
        PopulateChildNodes(pages, page, pageNode);
    }
}
于 2012-04-24T17:20:36.953 に答える