2010-09-13 6 views
0

Pour mon site, j'ai une liste d'utilisateurs et une liste d'événements. J'attribuerai les utilisateurs à chaque événement. J'ai une table nommée EventUsers de tenir ces données:Ajouter/supprimer une liste d'éléments pour un seul objet

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

Sur ma page, je veux être en mesure d'ajouter et de supprimer des utilisateurs pour un événement.

Je pourrais avoir une liste déroulante remplie avec les utilisateurs et un bouton "Ajouter" à côté de lui, puis quand je veux ajouter un utilisateur, j'en prends un et cliquez sur "Ajouter". Il y aurait une grille ci-dessous affichant tous les utilisateurs de l'événement, avec des boutons "Supprimer" pour chacun. L'inconvénient est qu'un appel à la base de données est effectué pour chaque ajout et suppression. Une autre option est d'avoir deux listboxes sur la page - une à gauche contenant tous les utilisateurs de la base de données, et une autre à droite qui contiendra des utilisateurs pour l'événement donné, et je peux juste ajouter ou retirer de la liste sur la droite. Ensuite, lorsque j'ai terminé, je clique sur Enregistrer et fait un appel de base de données. Le seul problème est que si je supprime et ajoute, je vais devoir supprimer chaque enregistrement dans ma table EventUsers pour cet événement, puis ajouter les modifications.

Je l'ai déjà rencontré auparavant, et j'ai toujours utilisé la méthode dropdown. Quelle est la méthode préférée ici?

+2

La méthode préférée serait celle qui obtient de meilleurs résultats dans les tests d'utilisabilité. –

+0

Eh bien, je serais le seul à l'utiliser. Je cherche l'option qui est la meilleure en termes de logique préférée et d'efficacité. – Steven

Répondre

1

Aucune n'est parfaite. Dans ces situations, il est préférable de faire quelques tests utilisateurs, et vous inquiéter de la mise en œuvre technique plus tard;)

Du point de vue de l'utilisateur, si j'ajoute beaucoup d'utilisateurs à un événement, je préfère être rapide et ne pas avoir de publication par action.

+0

Depuis quand avez-vous besoin d'une publication? :) AJAX pourrait rendre cela plutôt transparent. –

+0

C'est exactement ce que je suggère - pensez à l'expérience de l'utilisateur (c'est-à-dire sans postbacks) et devenez créatif avec la façon de le faire (AJAX/quelle que soit la solution). – TimS

+0

AJAX serait cool, bien que j'utilise des formulaires Web, pas MVC. J'ai déjà rencontré un problème avec AJAX et les formulaires Web, car les méthodes jQuery AJAX ne peuvent appeler que des méthodes statiques, qui à leur tour ne peuvent pas accéder aux contrôles de ma page (c'est-à-dire relier ma grille). Avez-vous un exemple de quelque chose comme ça? – Steven

0

Pour moi, il semble que vous vous inquiétiez un peu trop des résultats de la base de données dans la première solution. L'insertion ou la suppression d'un minuscule enregistrement de cette table est vraiment marginale, à mon avis. Même sur un grand site, les résultats de la base de données ne vont pas vraiment avoir d'importance à moins que vous ayez un index clusterisé quelque part qui pourrait ralentir les choses. Si vous n'aimez pas les hits de la base de données (encore une fois, je pense que ceux-ci sont marginaux) et que vous n'aimez pas supprimer/rajouter des enregistrements, vous pouvez stocker les changements dans la session et ne pas les conserver jusqu'à un bouton "Enregistrer" est cliqué. Cela nécessite un peu plus d'action de la part de votre utilisateur final, cependant, ce n'est probablement pas la meilleure idée non plus.

0

L'une ou l'autre manière devrait fonctionner mais votre deuxième option d'utilisation de la liste sur la droite pour ajouter/supprimer des articles est la voie à suivre puisque vous l'avez déjà fait et la technique est employée dans beaucoup d'autres aux utilisateurs.

Questions connexes