繁体   English   中英

从递归列表创建树视图C#Asp.net

[英]Create a treeview from a recursiv list C# Asp.net

我想从递归列表中填充一个树视图,我有一个项目,其中还包含一个项目列表,依此类推。 父节点的子节点的数量和级别不受限制。

这是课程:

public class item
        {
            public int Id;
            public string texte;
            public List<item> listeItems;
            public string status;
            public item()
            {
                this.listeItems = new List<item>();
            }
        }

例如:

item1 --> item11
      |-> item12
      |-> item13

item2 --> item21
      |-> item22
      |-> item23 --> item 211
                 |-> item 212 --> item 2111
                              |->........

我该怎么办? 先感谢您 !!

您需要编写如下内容:

void Populate(item i)
{
    if (i == null)
      return;
     foreach (var child in i)
     {
        Populate(child);
     }
     i.Id = something;
     i.texte = something;
     i.status = something;
}

由于子节点的数量不受限制,因此更好的方法是使用字典(尽管它可能比列表慢)。 以下实现是一种键-值对数据结构,其中每个项目都是“键”,其父项是“值”。 希望能帮助到你。

using System.Collections; 

使用System.Collections.Generic;

mytree类{

        public static Dictionary<String, String> dict = new Dictionary<String, String>();

         public void dictionaryadd(String key, String value) 
    {
      dict.Add(key, value);
      }
      static List<int> GetKeysFromValue(Dictionary<string, string> dict, string value)
{
    // Use LINQ to do a reverse dictionary lookup.
    // Returns a 'List<T>' to account for the possibility
    // of duplicate values.
    return
        (from item in dict
         where item.Value.Equals(value)
         select item.Key).ToList();
}
       public String dictionaryout(String key)
    {
        string value;
        if(dict.TryGetValue(key,out value))
                return value; 
        else    return String.Empty;
     }

     }
public HtmlGenericControl RenderMenu(List<item> nodes)
{
    if (nodes == null)
        return null;

    var ul = new HtmlGenericControl("ul");

    foreach (Node node in nodes)
    {
        var li = new HtmlGenericControl("li");
        li.InnerText = node.texte;

        if(node.listeItems != null)
        {
            li.Controls.Add(RenderMenu(node.listeItems));
        }

        ul.Controls.Add(li);
    }

    return ul;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM