2010-09-13 47 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給用戶。