0

解释:

编码:

       for (int i = 0; i < d.Count; i++) //loop for Product
            {
                TreeNode node = new TreeNode(((string[])d[i])[0]);
                thisForm.NewBKMTreeView.Nodes.Add(node); //add Product as Parent Node

                for (int j = 0; j < b.Count; j++) //loop for Item
                {
                    if (((string[])d[i])[1] == ((string[])b[j])[0]) //compare if ProductID from arrayList d same with ProductID from arrayList b
                    {
                        node.Nodes.Add(((string[])b[j])[2]); //add Item as Child Node
                    }
                }
            }

从上面的代码。

d是包含 2 个字符串的数组列表。

string[0]       string[1]
ProductName     ProductID
-----------    -----------
  Food             001
  NotFood          002

b也是包含 3 个字符串的数组列表

string[0]      string[1]      string[2]
ProductID      itemID          itemName
  001            X101            Soup
  001            X102            Bread
  002            G111            Pen
  002            G212            Book
  002            G222            Ruler

将 ProductName 添加为父节点的代码:

TreeNode node = new TreeNode(((string[])d[i])[0]);

(((string[])d[i])[0])持有 ProductName

将 itemName 添加为子节点的代码:

node.Nodes.Add(((string[])b[j])[2]);

(((string[])b[j])[2])保存 itemName

运行上面的代码后。arrayList 中的对象将显示在 Treeview 中

+Food
 - Soup
 - Bread
+NotFood
 - Pen
 - Book
 - Ruler

问题 :

树视图是带有复选框的树视图。所以用户可以检查他想要的项目。并将项目复制到另一个地方。我这里有一些问题。用户在节点检查时如何获取 itemID?

我想要 itemID 来获取用户检查的项目以从数据库中获取数据并将其复制到另一个引用 itemID 的地方。

4

2 回答 2

1

我认为您应该从树节点的标签属性中存储item id您需要的信息或任何其他信息。item

于 2012-07-03T07:06:48.097 回答
0

您应该将数据库数据转换为对象:

public class MyNode
{
    public MyNode Parent { get; set; }
    public ObservableCollection<MyNode> Children { get; set; }
    public string ItemId { get; set; }
    // ...
}

如果要更改父级,只需将新父级分配给 childrends 父级属性。更新父级和新父级的子级列表。

于 2012-07-03T07:18:24.157 回答