我有一个类别层次结构,其中一个类别可以有一个父级(并且您可以有多个级别的子级。)
我正在研究向用户显示此信息的方法,似乎基本的香草树布局是最直观的方式。但我想知道是否有人可以提出其他方法。
要求是,
1)向用户清楚地展示列表的父/子关系 2)允许用户轻松移动项目(无论是通过拖放还是其他方法) 3)假设您有具有多个父级的层次结构数据,这将如何改变你的选择?
谢谢大家!- 凯文
我有一个类别层次结构,其中一个类别可以有一个父级(并且您可以有多个级别的子级。)
我正在研究向用户显示此信息的方法,似乎基本的香草树布局是最直观的方式。但我想知道是否有人可以提出其他方法。
要求是,
1)向用户清楚地展示列表的父/子关系 2)允许用户轻松移动项目(无论是通过拖放还是其他方法) 3)假设您有具有多个父级的层次结构数据,这将如何改变你的选择?
谢谢大家!- 凯文
您的基本树控件在显示层次关系方面取得了巨大成功。对于新手来说,它相对容易学习,现在是层次结构的事实标准。它非常适合编辑关系,尤其是拖放。当分层深度随对象任意变化时,这可能是唯一可行的选择(即,对于树上的任何对象,都可以有子、孙、曾孙等等,直到无限数量的“世代”。 )。
树的主要替代方案是带有主从窗格的窗口。在此设计中,一个窗格包含父对象,另一个窗格包含子对象。选择父对象会使用其子项填充子窗格。您可以根据需要拥有孙子窗格和曾孙子窗格,但是当层次结构中的固定层数较少时,主详细信息通常效果最好。用户通过在窗口内或窗口之间拖放和剪切/复制和粘贴子对象来编辑父子关系,类似于使用树控件。
在以下情况下,主详细信息通常比树更好:
您需要为每个对象显示多个属性或属性。例如,对于给定的项目对象,您不仅要列出每个团队成员的员工编号,还要列出他们各自的姓名、角色、职务、部门和照片。使用主详细信息,每个窗格都可以布置为表格或表单,从而允许您显示有关每个对象的很多信息。树控件通常使用低效且令人困惑的属性对话框来完成此操作。
您需要细分孩子。例如,对于给定的项目对象,您希望将其团队成员与其项目阶段分开。使用主详细信息,您可以为单个父窗格拥有两个或多个子窗格,其中一个窗格列出团队成员,一个窗格列出阶段。将不相关的子对象与树控件分开是很尴尬的。
您有多对多关系,其中每个孩子可能有多个父母,并且每个父母都有多个孩子。例如,假设每个项目有多个员工(作为团队成员),但每个员工可能从事多个项目。您可以在父窗格中拥有一个包含项目的窗口,在子窗格中拥有团队成员,或者在父窗格中拥有员工,在子窗格中拥有项目分配,或者您可以同时拥有这两个窗口。当存在多对多关系时,树控件可能会使用户感到困惑,因为用户不希望同一个孩子在多个父母之下。
TreeGX 是一种以与标准树链接不同的方式显示分层数据的好方法。
我使用该组件来呈现搜索结果,虽然它不是免费的,但如果你想呈现独特的东西,它是值得的。
你可以放一些可视化的流程图样式设计,让它更具吸引力。你想走多远完全取决于你。这将帮助你与多个父母。
您的问题将您的设计问题视为抽象事物。不幸的是,事情没那么简单——要是有一个完美的解决方案就好了!
UI 设计是高度情境化的。您必须考虑用户组(即他们的需求、目标和期望)以及您尝试支持的活动类型(即用户浏览此树时究竟在做什么?他们的目标是什么?他们会使用您的应用程序每天还是每年一次?等)。在您的上下文中有效的方法可能在其他地方效果不佳。
当被告知“去构建一个快速原型并在最终用户的样本上对其进行测试”时,人们总是会感到失望。它涉及进一步的工作,并且超出了典型的开发人员的舒适区。但是,这是确保您的 UI 适合您的给定上下文的唯一方法。