2009-12-16 6 views
0

J'ai une forme principale avec une vitre gauche et droite. Le volet de gauche affiche une liste de clients et j'ai un bouton sur lequel l'utilisateur clique pour afficher les commandes. Lorsque l'utilisateur clique sur ce bouton, je souhaite afficher la vue détaillée des commandes décrite ci-dessous dans le volet de droite.MVP Connexion des triades

J'ai un formulaire de détails de commande qui sera affiché dans la partie droite du formulaire principal et montrera toutes les commandes pour le client sélectionné.

J'ai des interfaces de vue définies pour les deux vues et il y a un présentateur pour chaque vue.

Je veux que les détails de la commande soient en mesure de mettre la main sur le client sélectionné afin qu'il puisse obtenir les commandes pour ce client.

Comment dois-je procéder? Agrégateur d'événements? Présentateur composite?

+0

vous devez probablement d'abord fournir plus d'informations sur votre problème. Modifiez votre question pour le faire. – mauris

Répondre

1

Chaque volet n'est pas une vue distincte. En faisant cela, vous attachez les spécificités du formulaire au présentateur. L'idée de base est que lorsque vous modifiez une liste de clients, le présentateur ne doit pas se préoccuper de la configuration du formulaire.

La vue à deux volets doit extraire une liste de clients du présentateur et utiliser cette liste pour remplir le volet de gauche. Puis, lorsqu'un article est cliqué, il demande au présentateur la liste des commandes effectuées par les clients et d'autres détails.

Cette approche résoudra votre problème car il y a maintenant une seule vue. Lorsque vous cliquez sur un élément de la commande et qu'il doit connaître le client actuel, vous pouvez vous reporter à l'arborescence (ou à la zone de liste déroulante ou à la vue de liste, etc.) pour voir quel est le client actuellement sélectionné.

L'astuce pour éviter les problèmes de ce genre est de vous demander ce qui se passe si je crée un nouveau formulaire qui utilise des éléments d'interface utilisateur complètement différents. Le présentateur devra-t-il être modifié pour refléter cela? Si le présentateur le fait, vous l'avez lié trop étroitement à l'implémentation de la vue.

+0

Merci encore pour votre réponse. Que se passe-t-il si je prévois d'utiliser ce panneau de droite pour afficher d'autres vues liées à d'autres fonctionnalités? – David

+0

Dans ce cas, vous devez modifier le présentateur pour extraire des éléments tels que le client actuel de la vue afin que les autres éléments du logiciel puissent identifier les clients sélectionnés. Vous voulez également un état ou une variable d'état exposée par le présentateur quant au type de vue actuellement chargé. L'autre alternative consiste à faire de la seconde vue un observateur de la première vue. Une interface distincte est implémentée par l'arborescence pour permettre aux observateurs de savoir quelle vue se trouve et quel est l'élément actuellement sélectionné. –