2

我有一个类似于这样的数据库结构:

项目

  • ID
  • 姓名
  • ParentItemFK(任务和笔记可以有任何项目作为父项;类别只能有其他类别作为父项)
  • 类别FK
  • 任务FK
  • 注意FK

类别

  • ID
  • 说明(可选)

任务

  • ID
  • 详细描述
  • 完成了

笔记

  • ID
  • 全文

这些项目将显示在 TreeView 中。项目可以是类别、任务或注释(因此只有一个 FK 列被填写)。

我想在 TreeView 中显示所有项目。我正在使用带有 WCF 的 DomainService 从后端获取数据,以便在 Silverlight 中显示。

我可以以编程方式构建要在 TreeView 中显示的对象(即创建一个对象,例如 ItemNode,每个子项都有子 ItemNode)。这可能没问题,但是当刷新 DomainService 拥有的数据时,我认为必须重建整个 ItemNodes 列表(这可能经常发生)。

如果这很重要,我在 DomainService 下使用实体框架。

有一个更好的方法吗??

谢谢!

4

1 回答 1

1

我做了类似的事情,并创建了一个代表我的层次结构的自定义对象。然后我创建了一个帮助类来递归自定义对象并创建树节点以绑定到 TreeView。

我还使用 Hierarchy SQL 数据类型来表示我在数据库中的层次结构。

由于您使用实体框架,我认为您最好的选择是创建一些 TreeNode 类,该类将接收您的实体,然后通过它们递归并吐出 TreeNode 的层次结构,然后您可以将其绑定到 TreeView。

此外,您需要将该实体的唯一标识符放在 TreeNode.Value 中,以便当用户与节点交互时,您将能够轻松修改代表 TreeNode 的实体。因此,创建另一个将通过您的实体递归的类,并根据其标识符获取对该实体的引用。

hth

于 2011-03-29T12:56:06.910 回答