2010-03-08 4 views
0

Depuis que j'ai commencé à utiliser VB.NET il y a quelques années, je suis devenu familier avec l'utilisation des fonctions de liaison de données de .NET, mais je trouve souvent que mon auto est déconcerté par son comportement. La bonne façon de travailler devrait me permettre de trouver du travail pour répondre à mes besoins et continuer.Liaison de données maître-détail VB.NET personnalisée

Inutile de dire que mes problèmes continuent de se poser. J'utilise des objets personnalisés comme sources de données pour les contrôles et souvent des formulaires entiers. Je trouve frustrant de séparer la logique métier et l'interface graphique. (Cela pourrait être une nouvelle question entièrement.) Donc, pour beaucoup d'objets, je génère un formulaire qui a le DataBindingSource pour l'objet. Lorsque je crée chacun à partir du Nouveau Constructeur, je lui passe explicitement l'objet auquel il doit être lié, puis je le mets à DataSource du BindingSource. (C'est une bouchée!)

Maintenant, l'objet Maître (disons lié à chaque formulaire) contient souvent une liste d'objets que j'ai aimé afficher dans un DataGridView. Je crée (parfois) et modifie ces objets enfants sous leur propre forme (en créant à nouveau une base de données de la même manière que le masque principal) mais lorsque je les ajoute à la liste dans l'objet maître, le DataGridView ne sera pas mis à jour avec les nouveaux éléments.

Ma question a vraiment quelques couches:

  1. Comment puis-je facilement/efficacement/mettre à jour correctement cette DataGridView avec la liste des objets de détail quand je les ajoute à la liste de l'objet principal. Cette approche est-elle bonne pour DataBinding?

  2. Quelle est la meilleure façon de séparer la logique métier de l'interface graphique.

Répondre

2

1) utilisez BindingList < T>. il gère pour vous tous les rafraîchissements de la grille. Je l'ai utilisé plusieurs fois, et je l'aime. c'est super facile et fait ce que tu veux. http://msdn.microsoft.com/en-us/library/ms132679.aspx

2) oui

3) modèle Model-View-présentateur avec un ViewModel ou PresentationModel. Il y a beaucoup d'informations sur Model-View-Presenter sur le web. lisez-le et apprenez-le bien. et en passant: vous verrez beaucoup d'infos MVP liées au développement web avec les webforms asp.net ... ça marche aussi bien dans le développement de WinForms. J'utilise MVP dans Winforms depuis des années.

Questions connexes