2010-09-13 43 views
0

对于我的网站,我有一个用户列表和事件列表。我将分配用户到每个事件。我有一个名为EventUsers的表来保存这些数据:为单个对象添加/删除项目列表

------------------------ 
EventUsers 
------------------------ 
EventID | UserID 
------------------------ 
1  | 123 
1  | 456 
2  | 789 

在我的页面上,我希望能够为某个事件添加和删除用户。

我可以有一个下拉填充用户和旁边的“添加”按钮,然后当我想添加一个用户,我选择一个,然后单击“添加”。在它下面会有一个网格显示事件的所有用户,每个用户都有“删除”按钮。缺点是每次添加和删除都会进行数据库调用。

另一个选择是在页面上有两个列表框 - 一个左侧包含数据库中的所有用户,另一个右侧包含给定事件的用户,我可以在列表中添加或删除在右边。然后,当我完成后,我点击保存,它会进行一次数据库调用。唯一的问题是,如果我删除并添加,我将不得不删除我的EventUsers表中的每个记录该事件,然后添加更改。

我以前遇到过这种情况,而且我总是使用下拉方法。这里的首选方法是什么?

+2

首选的方法是在可用性测试中得分更高的方法。 – 2010-09-13 20:29:32

+0

嗯,我会是唯一使用它的人。我正在寻找在首选逻辑和效率方面更好的选项。 – Steven 2010-09-13 20:34:20

回答

1

两者都不完美。在这些情况下,最好做一些用户测试,并担心稍后的技术实现;)

从用户旅程的角度来看,如果我将很多用户添加到事件中,我更喜欢它快速,并没有一个回发每个动作。

+0

从什么时候开始需要回传? :) AJAX可以使这非常无缝。 – 2010-09-13 20:36:50

+0

这正是我所建议的 - 思考用户体验(即没有回传),然后在如何去做(AJAX /任何解决方案)方面具有创意。 – TimS 2010-09-13 20:46:16

+0

尽管我使用的是Web表单,而不是MVC,AJAX将会很酷。之前我遇到过AJAX和Web表单的问题,因为jQuery AJAX方法只能调用静态方法,而静态方法又不能访问我的页面上的控件(即重新绑定我的网格)。你有这样的例子吗? – Steven 2010-09-13 20:49:34

0

对我来说,听起来好像你对第一个解决方案中的数据库命中有点太担心。在我看来,插入或删除该表中的一个小记录实际上是微不足道的。即使在一个大型的网站上,除非你有一个聚集索引可能会减缓速度,否则数据库命中并不重要。

如果您不喜欢数据库命中(再次,我认为这些是边际),并且您不喜欢删除/重新添加记录,您可以考虑将更改存储在会话中并且不保留它们直到点击“保存”按钮。然而,这需要您的最终用户采取更多行动,所以它可能也不是最好的想法。

0

无论哪种方式应该工作,但它听起来像你使用右边的列表中添加/删除项目是要走的路的第二选择,因为你已经做了它和技术在许多其他情况下使用,因此是familar给用户。