2010-11-16 3 views
0

J'ai une liste de clients affichés dans un menu supérieur où chaque nom de domaine est un menuitem. Maintenant, je veux avoir les mêmes clients (même chose que je ne veux pas recharger mes données de la base de données) dans un autre menu.C#: Obtenez une liste de clients et de partager sur deux vues

Les deux menus sont dans 2 UserControls différents. Dans chaque UserControl, vous pouvez faire des choses sur ce menu client. Comment concevez-vous à la fois menu`s/UserControls/Presenter pour obtenir la customerList une seule fois de la base de données? J'utilise le modèle MVP de winforms.

Répondre

0

Vous pouvez charger CustomerList dans une liste statique et partager cette liste comme un mécanisme de mise en cache.

1

La réponse complète dépend de la manière dont vous récupérez vos données dans votre base de données, puis revenez à la commande usercontrol. Mais puisque vous utilisez un 'Presenter', je suppose que vous avez une référence à une liste de clients. Tout ce que vous devez faire est de passer cette référence à chacun des deux contrôles userc et les deux auront accès aux mêmes données d'instance.

0

Je ne sais pas comment vous vous connectez à votre base de données. Si vous utilisez simplement un DataSource pour vous connecter directement, je ne peux pas vous aider. Sinon, vous pouvez mettre en cache par requête dans votre couche d'accès aux données afin que tous les contrôles tirent leurs données du même cache pour l'heure de la demande.

Il existe de nombreuses façons de mettre en cache vos données depuis la base de données, ce n'est qu'un exemple.

0

Vous pouvez vous connecter une seule fois à votre base de données, et stocker ces données localement dans un ensemble de données/datatable, vous pouvez ensuite passer cela et y accéder quand vous le souhaitez.

Questions connexes