0

首先,我知道这个问题相对于 StackOverflow 可能被认为是题外话。以防万一,请告知它在 StackExchange 站点中更适合的位置。

我需要为以下(简单)情况开发一个简单但完整的用户界面:处理多个用户对多个事件的出席。这个应用程序的目标用户是超级用户,即需要监控和统计每个用户参与了多少事件,以及有多少用户参与了一个事件的人。超级用户应该能够对用户、事件、出席者进行任何类型的 CRUD 操作。

db 结构由表组成:用户、事件、出席

用户与考勤OneToMany关系:一个用户与多个考勤相关联。

活动与出席OneToMany关系。

我想到的布局如下(使用 PrimeFaces 小部件):带有 2 个选项卡的 TabView:用户和事件。每个选项卡显示其类型的所有记录,通过DataTables延迟加载、过滤和对每列排序。

每个 DataTable 都有附加的列,其中包含用于编辑-删除操作的按钮。此外,用户表中的附加列包含一个“查看事件”按钮,用于查看与该用户相关的事件。以一种特殊的方式,“查看用户”按钮出现在事件表中。

“查看事件”按钮打开一个模式对话框,其中包含另一个 DataTable,其中包含与用户相关的事件。

问题来了:让超级用户更新与所选用户相关的事件列表的合理方法是什么?我是否应该显示所有事件,包括不相关的事件,以及带有显示关系的单选按钮的列?还是应该只显示相关事件?超级用户将如何添加新的相关事件?我是否需要另一个数据表来显示尚未相关的事件?还是我应该使用 PickList?如果使用 PickList,当列表很长时会发生什么?我在 PickList 组件中看不到分页或过滤功能。

4

2 回答 2

1

如果Primefaces不适合pickList在. 但用于大型数据集效率不高。改为使用。但是@Namphibian 已经说过了。scrollparent componentdataTables

现在开始设计

UsersEvents分开tabs是好的。如果我是你,我会dataTables在每个选项卡中放置 3 个,例如,对于User选项卡,我将拥有这些:

  • 所有用户
  • 与特定事件有关的事件User
  • 所有活动

只有所有用户 dataTable(带有multiselection)在选项卡的初始打开时可见。

table将控制buttons其中footer将管理另一个 2 的显示tables,例如:“ RelatedEvents ”、“ AssignToEvent ”和“ AddUserbuttons

单击“ RelatedEvents ”后,将显示相关事件 dataTable(例如,用 处理它jQuery)。这table将与从所有用户Events中选择的所有相关。在这里,您可以管理事件的“取消分配” ,特定的“更新” ,当然还有“隐藏”这个(再次是 jQuery)。UserUserEventtable

单击“ AssignToEvent ”后,将显示所有事件(jQuery)。 dataTable在这table将是所有现有的Events。在这里,您将选择从所有用户Event中选择的特定然后“确认分配”以选择。它还将包含“隐藏”按钮。UsersEvent

选项卡的类似方法Event。由于 dataTable 具有许多优点,例如过滤、排序、行高亮等。imo 它是最佳选择。

这样,您将能够让超级用户浏览所有内容Users并对其进行编辑,而不会让所有内容都tables可见,而且还可以让他在 2 次点击内管理所有内容。(事件相同)

这些只是我的想法。也许它会以某种方式激励你。

于 2012-04-13T15:46:47.047 回答
0

我会应用的简单经验法则是,对于更长的列表,数据表更容易使用。您可以对表格应用过滤器和排序。Picklist 通常更适合较小的列表。

拿起笔和纸草绘出您正在考虑的布局。我发现这是一种快速查看不同布局想法的方法,可以帮助快速消除有问题的设计。

于 2012-04-13T08:40:03.463 回答