首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET中面板的递归性

ASP.NET中面板的递归性
EN

Stack Overflow用户
提问于 2012-11-18 06:36:33
回答 1查看 97关注 0票数 3

我有一个名为"categories“的数据库。该表有3列: 1. ID 2. Name 3. ParentID。

代码语言:javascript
复制
id | Name    |ParentID
_____________________
1  | John    | 0
2  | Charlie | 1
3  | Vasily  | 1
4  | David   | 2
5  | Edward  | 3

约翰是查利和瓦西里的父母,大卫是查利的孩子,爱德华是瓦西里的孩子。问题是:考虑到子面板必须在其父面板中,我如何为每个类别创建和填充一些面板?这个问题和this one here几乎是一样的,但是我真的需要用面板代替树视图。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 07:36:16

因为代码是,所以您应该更改代码

代码语言:javascript
复制
public class MyObject
{
    public int Id;
    public int ParentId;
    public string Name;
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack) {
        List<MyObject> list = new List<MyObject>();
        list.Add(new MyObject() { Id = 1, Name = "Alice", ParentId = 0 });
        list.Add(new MyObject() { Id = 2, Name = "Bob", ParentId = 1 });
        list.Add(new MyObject() { Id = 3, Name = "Charlie", ParentId = 1 });
        list.Add(new MyObject() { Id = 4, Name = "David", ParentId = 2 });

        BindTree(list, null);
    }
}

private void BindTree(IEnumerable<MyObject> list, Panel parentPanel)
{

    var nodes = list.Where(x => parentPanel == null ? x.ParentId == 0 : x.ParentId == int.Parse(parentPanel.ID));
    foreach (var node in nodes) {
        Panel newPanel = new Panel() { ID = node.Id.ToString() };
        if (parentPanel == null) {
            Panel1.Controls.Add(newPanel);
        } else {
            parentPanel.Controls.Add(newPanel);
        }
        BindTree(list, newPanel);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13435485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档