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

时间:2013-08-14 10:51:58

标签: c# linq-to-sql

我有以下代码,我需要创建要与列表绑定的节点和子节点。 我正在将它转换为数组然后我想添加,但我没有这样做我应该怎么做?以下是我的代码:

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表达式。什么是最好的方式?

1 个答案:

答案 0 :(得分:1)

这将失败: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会变成:

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