如何从列表中添加树视图中的节点

本文关键字:视图 节点 添加 列表 | 更新日期: 2023-09-27 18:27:34

我有以下代码,需要在其中创建要与列表绑定的节点和子节点。我正在将其转换为数组,然后我试图添加,但我未能做到这一点。我应该怎么做?以下是我的代码:

foreach (var item in ProductCategory)
{
    TreeNode tr = new TreeNode(item.CatName);
    List<dataObject> lst = objFreecusatomization.GetAllCustomItems(CategoryType.Dressing, item.CategoryID);
    TreeNode[] sumItemList =new TreeNode[lst.Count];
    foreach (var subItem in lst)
    {
        sumItemList[sumItemList] = new TreeNode { Name = subItem.Name, Text = subItem.Name, Checked = subItem.Selected };
    }
    treeCustomItem.Nodes.Add(item.CatName, sumItemList);
}

我还需要为添加的项目分配键值和名称。通过LinQ或lambda表达式。最好的方法是什么?

如何从列表中添加树视图中的节点

这将失败:sumItemList[sumItemList]=new TreeNode。。。数组的索引不能是数组本身。

由于您没有索引器(因为foreach),我建议您使用List,如下所示:

foreach (var item in ProductCategory)
{
    TreeNode treeCustomItem = new TreeNode(item.CatName);
    List<dataObject> lst = objFreecusatomization.GetAllCustomItems(CategoryType.Dressing, item.CategoryID);
    List<TreeNode> sumItemList = new List<TreeNode>();
    foreach (var subItem in lst)
    {
        sumItemList.Add(new TreeNode { ... });
    }
    treeCustomItem.Nodes.AddRange(sumItemList.ToArray());
}

但是,由于您已经在对提取的子项进行迭代,因此也可以直接添加子项,而不是使用数组/列表。你的内侧前臂会变成:

foreach (var subItem in lst)
{
    treeCustomItem.Nodes.Add(new TreeNode { ... });
}