如何为多对多关系创建 UI?
Posted
技术标签:
【中文标题】如何为多对多关系创建 UI?【英文标题】:How do I create a UI for a Many-to-Many relationship? 【发布时间】:2011-08-17 01:29:12 【问题描述】:谁能建议创建用于建立多对多关系的 UI 的最佳方法?
让我们使用上一个问题列表中的示例> Patient.
我可以创建两个单独的表视图,一个用于列表,另一个用于患者,这将允许用户使用两个单独创建的数组控制器(列表和患者)创建列表和患者,一个链接到列表实体,另一个链接到患者实体。
现在我希望能够通过创建仅显示所选列表中的患者的表视图来从列表中添加/删除患者。为此,我创建了一个数组控制器 (ListPatients),该控制器链接到实体 Patient,其内容集绑定到 Lists.selection.patients。
现在事情从这里开始就停止了……
如果我将按钮绑定到 ListPatients.add 方法,则会创建一个 NEW Patient - 似乎无法简单地在现有 Patient 和 List 之间添加 NEW 关系。
理想情况下,我希望能够有一个下拉列表来选择患者。
是否有人对如何最好地做到这一点有任何建议,而无需创建新实体来表示这种关系。
【问题讨论】:
【参考方案1】:您需要的是交换主从视图,其中List
表或Patient
表在任何特定时间都是主视图或详细信息。
当List
是主视图时,选择一行将导致详细视图显示rowList.patients
关系中的所有Patient
对象。当Patient
是Master 视图时,选择一行将导致Detail 视图显示rowPatient.lists
关系中的所有List
对象。
您确实希望拆分 UI,以便用户始终清楚地了解两个表之间的关系。我会推荐一组四个表,每个主从设置两个。这样,用户也将了解他们在看什么。
这也将使添加新对象变得容易。只需在详细信息表下放置一个add new
按钮,用户就会明白单击它会在主视图中选择的对象的关系中添加一个新对象。
【讨论】:
TechZen - 谢谢。我遇到的问题是如何创建主详细信息视图 - 现在让我们坚持使用列表 ->> 患者主详细信息视图 - 它不仅允许用户创建新的患者对象,而且还允许用户选择现有的要包含在所选列表的患者列表中的患者对象。请记住,一个患者可以出现在多个列表中,因此如果我为选定的列表对象创建一个患者对象,那么我还需要能够选择这个新的患者对象并将其添加到另一个列表对象中。 那么我将如何构造数组控制器、表格视图和弹出列表来处理这个要求。让我们坚持创建多个 List 对象和单独数量的 Patient 对象的简单案例。使用单独的表视图和数组控制器很容易。现在将使用什么机制来允许用户选择多个 Patient 对象并将它们添加到 List 对象中?如果不使用一些自定义代码,我看不到任何标准方法可以做到这一点 - 例如,显示 List 对象列表,每个对象旁边都有一个复选框。 这有点详细的评论。您可能想提出另一个问题。我会保持简单:只需将列表对象表和患者对象表键入所选列表即可。以另一种方式设置另一对表。不要在 UI 的小部分中塞入太多功能。以上是关于如何为多对多关系创建 UI?的主要内容,如果未能解决你的问题,请参考以下文章
如何为连接表中的其他属性创建多对多 Hibernate 映射?