Wou*_*ick 27 language-agnostic user-interface many-to-many
我经常遇到一种情况,我需要提出一个GUI来编辑具有:m关系的数据.我正在寻找用户友好的GUI想法.
[table1]
|
/|\
[table2]
\|/
|
[table3]
Run Code Online (Sandbox Code Playgroud)
通常,GUI类似于以下内容:
Grid that shows all items from table1
Add table3 item... (显示带有table3项的模态窗口)
Grid that shows all items from table3
在用户选择了table3项之后,我向table2添加了一个新行并刷新了网格.
缺点:
我的问题:
有没有人知道一种更好的方式来直观地浏览和编辑具有:m关系的数据?或者我可以从现有软件包"窃取"的任何好模式?
解决方案1
如果数据集不是太大,请使用表并允许用户在单元格中放置检查(表1是X轴,表3是Y轴).
只要您允许用户过滤或以其他方式限制在x和y轴上显示哪些值,您就可以对较大的table1/3数据集执行此操作.
解决方案2
引用此页面,"多对多关系实际上是两个与结点/链接表的一对多关系".
因此,作为一个解决方案,您可以简单地采用自己的解决方案并通过屏幕/对话框来解决前2个不利因素:表1 => 3以及3 => 1.
不是一个完美的解决方案,但至少提供所有需要的功能
解决方案3
与您自己的解决方案有些相似:
显示基于table1的表格,其中:
B. col1包含table1元素
C. col2包含table3中已与table1中此元素关联的所有元素的列表.
如果通常很少有元素关联,则列表可以是水平的,如果水平到太宽,则列表可以是垂直(可滚动).
重要的是,table3中的每个显示元素旁边都有一个"删除"图标(x),以便快速删除.
允许选择要为其添加映射的table1中的哪个元素.
有两种方法可以做到这一点 - 为表格中的每一行添加一个复选框,并有一个标记为"添加与所选行的关系"的按钮(措辞需要改进),或者只是在表格中有一个第3列,包含按钮/链接,用于向该单个行添加关系.
如果用户可能经常将table3中的完全相同的元素集添加到table1中的多行,那么前者是个好主意.
单击"添加"按钮/链接时,将显示表3中可过滤的多选元素列表,并带有"添加选定"按钮.
在您的解决方案中(请参阅我的#2),这是一个对称的,因此您应该实现镜像UI,以便在需要时从table3映射到table1.
| 归档时间: |
|
| 查看次数: |
8465 次 |
| 最近记录: |