2012-04-24 4 views
0

Мне нужно заполнить treeview в asp.net, и мне нужна рекурсивная функция для вставки всех узлов и дочерних узлов в treeview.Динамическая динамическая динамика

У меня есть два метода:

GetRootPage() 

GetPagesByParent(Page parent) -> возвращает IEnumerable<Page> со страницей Чайлдс.

Кто-нибудь может помочь мне с рекурсивной логикой построить дерево?

+2

Это домашнее задание? – ykatchou

+0

Вы что-то пробовали? –

+0

Возможно, вы можете начать здесь ** http: //stackoverflow.com/questions/361661/populate-treeview-from-database** –

ответ

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); 
    } 
} 
Смежные вопросы