2012-04-24 60 views
0

我需要在asp.net中填充treeview,我需要一个递归函数来在树视图中插入所有节点和子节点。Treeview人口动态

我有两种方法:

GetRootPage() 

GetPagesByParent(Page parent) - >返回与页面孩子的一个IEnumerable<Page>

任何人都可以帮助我用递归逻辑来构建树?

+2

它是功课吗? – ykatchou 2012-04-24 15:27:29

+0

你尝试过什么吗? – 2012-04-24 15:28:42

+0

你可能可以从这里得到一个开始** http://stackoverflow.com/questions/361661/populate-treeview-from-database** – 2012-04-24 15:35:59

回答

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); 
    } 
}