我想从递归列表中填充树视图, 我有一个项目,其中还包含项目列表等。 父节点的子节点数量和级别不受限制。
这是班级:
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
|->........
我怎么能这样做? 提前谢谢!!
答案 0 :(得分:0)
你需要写一些类似的东西:
void Populate(item i)
{
if (i == null)
return;
foreach (var child in i)
{
Populate(child);
}
i.Id = something;
i.texte = something;
i.status = something;
}
答案 1 :(得分:0)
由于子节点的数量不受限制,更好的方法是使用字典(尽管它可能比列表慢)。下面的实现是一种键值对数据结构,其中每个项目都是&#34;键&#34;它的父母是一个&#34;值&#34;。希望能帮助到你。
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;
}
}
答案 2 :(得分:0)
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;
}