树视图是一个好的方式本的层次的用户,但是想象一下下面的情况的层次结构如下:

Building 1 
 -Tenant 1
   - Payment 1
   - Payment 2
Building 2
 -Tenant 1
   - Payment 1
 -Tenant 2
   - Payment 1
   - Payment 2

你需要做一个插到数据库时用户击的付款节点。基本变量所需的插入Building_Id,Tenant_Id,Payment_Id.一种方式来组装这些是给走到父母的每个节点:

Building_Id = Payment.ParentNode.ParentNode.Id

它是更好地储存的所有价值观的身份证上的付款节点在以下格式,那么分析价值为Building_Id,Tenant_Id,Payment_Id?例如:

Payment.Value = "1|2|1"
有帮助吗?

解决方案

我发现处理的附加数据的最佳方法是继承树节点。我创建包含的共享数据欲保持BaseNode类,并且从进一步的继承对任何特定的节点类型。

子类的价值在于可以保持强的数据类型和复杂的数据类型,就像任何其他类...这避免黑客阵列与管分离器等的字符串。

一旦你有你的节点来代替它允许同一棵树走你建议,但现在你从(比方说)BaseNode.MyData(其中所有的子类型将继承)拉动的值。

有一点需要注意,因为如果你这样做,虽然:你必须了解你要如何权威性这些节点是。在我的情况下,当用户浏览我们与数据库缓存查询树,以确保我们不需要重新填充数据。

其他提示

如果的 TreeNodesTreeView 控制有 Tag 酒店,拥有一个目的,你可以联系一定义对象包含那些希望的特性与每 TreeNode's的标签,然后你可以访问它们是必要的。

例如,在 .Net 作为4.5,它将是这样的:

myTreeNode.Tag = myObject;

哪里 myTreeNode 是的一个实例 TreeNodemyObject 是的一个实例定对象的定义,其中包含的数据你希望有关联 TreeNode 你的 TreeView.

这是一篇文章上MSDN在树节点.标记财产: MSDN-树节点.酒店的标记.

您可能会考虑Godeke的想法进一步,而不是继承的树节点,并配合节点的业务对象集合 - 存储在收集儿童的性质您的本地数据。收集逻辑就能给你所需要的数据,并且获得从表现层分离数据和逻辑的优势。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top