Recursive TreeView in ASP.NET

前端 未结 3 2031
梦如初夏
梦如初夏 2020-11-30 09:27

I have an object of type list from which I wish to use to populate a treeview in asp.net c#.

Each object item has:

id | Name | ParentId
3条回答
  •  时光说笑
    2020-11-30 09:50

    I think this should get you started. I created a MyObject class to mimic your object .

    public class MyObject
    {
        public int Id;
        public int ParentId;
        public string Name;
    }
    

    Here is a method to recursivley add tree view nodes based on the list.

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            List list = new List();
            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 list, TreeNode parentNode)
    {
        var nodes = list.Where(x => parentNode == null ? x.ParentId == 0 : x.ParentId == int.Parse(parentNode.Value));
        foreach (var node in nodes)
        {
            TreeNode newNode = new TreeNode(node.Name, node.Id.ToString());
            if (parentNode == null)
            {
                treeView1.Nodes.Add(newNode);
            }
            else
            {
                parentNode.ChildNodes.Add(newNode);
            }
            BindTree(list, newNode);
        }
    }
    

提交回复
热议问题