我有几个表需要为
创建管理界面Table 1
Table 2
Table 3
Table 4
Table 5
每个表的内容都反映在一个字段中它属于哪个父...所以
表2,有一个与表1中的行相关的字段,表3有一个与表2相关的字段,依此类推。
什么是向用户呈现此内容的最佳方式,因此他们无需记住ID号。比如说,他们想在表3中添加一个新条目,他们必须选择表2中要链接到哪一行。
该关系仅在表1之后扩展了一个级别。因此,在表5中创建一组新选项将涉及在表1中创建条目,在表2中创建新条目,将其链接到表1,表中的新条目3,将其链接到表2,表4中的新条目,将其链接到3,最后链接到表5中的新选项。
所以我的问题是与用户界面相关的最佳方式向用户展示。或者,这种系统叫什么,所以我可以搜索其他例子。
感谢。
答案 0 :(得分:1)
根据您所说的,看起来表中的一个条目不可能存在而没有其他表中的相应条目,对吗?
在这种情况下,您可以提供一个类似界面的向导,提示用户在每个新向导页面上输入每个表的数据,从表1的数据开始。然后,一旦收集了所有数据,您就可以触发一系列更新语句,其中表1中记录的id重用于表2-5中的插入。 (根据您的表格设计,您可能会使用LAST_INSERT_ID())获取此ID。
或者,如果您不想使用多个insert语句,则可以使用可更新的视图(如果您使用的是MySQL 5)。
或者,您可以拥有一个表结构,其中表X中的记录必须在表Y中具有链接记录(其中Y 在这种情况下,您仍然可以使用向导,但是您可以从实际想要为其创建信息的表开始,然后让向导提示输入上一个表的数据,依此类推,直到它提示输入数据为止。因此,如果你真的想要为表4创建数据,首先让向导提示,然后提示输入表3的数据,依此类推到表1.然后像以前那样进行数据输入。 / p>
答案 1 :(得分:0)
听起来像是为我最喜欢的主人 - 细节布局准备的问题。每个表都在同一窗口中显示的单独窗格(窗格1到5)中表示。对于表1至5,窗格从上到下和/或从左到右依次排列。在每个窗格中,始终只有一个“活动”记录,以某种方式为用户标记。每个窗格的内容由其上方/左侧窗格中的活动记录确定。因此,窗格N显示了在窗格N-1中显示的表N-1的活动记录的表N记录。窗格中的活动记录是表中最后具有焦点的记录(在任何字段中)。因此,例如,用户可以通过点击窗格N-1中该记录的任何字段来显示表N-1中的特定记录的表N记录。一旦活动记录在窗格N-1中更改(请不要“刷新”按钮),窗格N的查询将异步启动。所有非只读字段都应该就地编辑。 “保存”按钮或菜单项作为批处理插入/更新所有表的所有记录(或者,只要编辑了字段并且焦点离开它,您就可以触发更新,如果您的带宽可以处理它)。
因此,要向表N添加新记录,用户将焦点放在表1到表N-1的正确记录上,然后将焦点放在窗格N中(例如,单击其中的任意位置)并选择添加记录菜单项。这将在窗格N中插入一个新的空白记录,供用户完成。用户可以继续选择添加记录以使用活动表N-1记录的期望记录填充窗格N.用户可以通过单击窗格N + 1并选择添加记录,随时使用相同的过程为新创建的表N记录添加表N + 1记录。此外,用户可以随时在任何窗格中编辑记录的字段。 (或者,您可以为每个表单独添加“添加记录”菜单项,这样可以节省用户必须将焦点转移到窗格以添加记录,但是许多菜单项可能比其价值更加混乱;另一种方法是始终拥有每个窗格中都有空白记录,供用户填写,无需添加“添加记录”菜单项。
此设计为用户提供了最大的灵活性,允许他们随时以任何顺序添加,删除和更新记录。因为窗口“记住”编辑之间的活动记录,所以它也非常有效,消除了对表1到N-1记录的繁琐重新选择,以编辑特定表N-1记录的一系列表N记录(不同于说,一个巫师)。它以直观的分层布局显示单个窗口中所有表的所有记录,便于查看和浏览数据,并最大限度地减少窗口或页面之间的导航(同样,与向导不同)。
单个窗口有五个窗格,但不是太多。但是,如果您为用户提供了调整大小和隐藏/显示每个窗格的简便方法,那将会有所帮助。因此,如果用户需要处理表N-1中的记录的一堆表N记录,则她或他可以隐藏所有其他窗格,将窗格N扩展到完整窗口大小以最小化滚动。此外,如果用户不需要研究或编辑某些表的记录,请不要将它们放在自己的窗格中,而是将每个表显示为结构中相邻表的字段。例如,如果不允许用户编辑表N,则可以在窗格N + 1中使用字段而不是窗格N,该字段显示每个表N + 1记录所属的表N记录的功能名称。通过将其设置为下拉列表,用户将能够为任何表N + 1记录分配/重新分配表N记录。
http://www.zuschlogin.com/?p=31的详细信息。
Stack Overflow上的更多内容可能比较重要:
UI design pattern for multi level grid
What’s best when inserting into a table view, and add button or a blank line?