我需要填充treeview
中的asp.net
,我需要一个递归函数来在树视图中插入所有节点和子节点。
我有两种方法:
GetRootPage()
GetPagesByParent(Page parent)
- &gt;返回带有页面子项的IEnumerable<Page>
。
任何人都可以帮我构建树的递归逻辑吗?
答案 0 :(得分: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);
}
}