2012-04-24 53 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); 
    } 
}