Liaison données dans une application multi-couches
Epitt
Messages postés60Date d'inscriptionsamedi 16 juin 2001StatutMembreDernière intervention 2 mars 2021
-
17 août 2009 à 20:48
Epitt
Messages postés60Date d'inscriptionsamedi 16 juin 2001StatutMembreDernière intervention 2 mars 2021
-
18 août 2009 à 12:03
Bonsoir,
je me suis cassé la tête toute la journée pour afficher mes données selon le schéma qui suit, mais je n'arrive toujours pas à les afficher. J'ai tenté de déboguer pas-à-pas, mais je ne comprends pas où ça cloche. Est-ce qu'une bonne âme pourrait y jeter un oeil svp?
Formulaire PRINCIPAL L'instance Métier est bien affectée à la variable metier
//Variable de niveau classe pour réception de l'instance clsMetier
private clsMetier metier = null;
public frmPrincipal() //Constructeur
{
InitializeComponent();
//Création de l'instance Métier et affectation à la variable metier
metier = new clsMetier();
}
Formulaire PROFIL
Je pense que le problème se situe ici. Je peux lier le BindingSource, mais le BindingNavigator reste grisé et les données ne s'affichent pas.
En fait, si je mets un STOP devant la surcharge du constructeur, ça passe tout droit.
//Variable de niveau classe pour réception de l'instance clsMetier
private clsMetier metier = null;
public frmProfil() //Constructeur
{
InitializeComponent();
}
public frmProfil(clsMetier metier) //Surcharge du constructeur
{
InitializeComponent();
//Affectation du paramètre metier à la variable metier
this.metier = metier;
}
private void frmProfil_Load(object sender, EventArgs e)
{
//Création de l'instance de l'objet Met_Profil
this.metier.CreationObjetProfil();
//COORDONNEES DES COLLABORATEURS
//Initialisation de la source des données
this.bdsCollaborateur.DataSource = metier.ObjetProfil.VueCollaborateur;
this.bdnCollaborateur.BindingSource = this.bdsCollaborateur;
//LIAISONS DES DONNEES AUX CONTROLES
this.txtNoPersonnel.DataBindings.Add("Text", this.bdsCollaborateur, "NoPersonnel");
}
Classe dll METIER
L'instance de Donnees est bien affectée à la variable Donnees.
//Variable de niveau classe pour réception de l'instance AccesDonnees
private AccesDonnees Donnees = null;
//Variable de niveau classe pour réception des instances des objets Métiers
private Met_Profil objProf = null;
public clsMetier() //Constructeur
{
//Création de l'instance AccesDonnees et affectation à la variable Donnees
this.Donnees = new AccesDonnees();
}
//Mise à disposition (en lecture seule) des objets Métier
public Met_Profil ObjetProfil
{
get
{
return objProf;
}
}
public void CreationObjetProfil()
{
//Création de l'instance "Met_Profil". A disposition dans la variable "objProf".
objProf = new Met_Profil(this.Donnees);
}
Classe dll Met_Profil
//Variable de niveau classe pour réception de l'instance AccesDonnees
private AccesDonnees Donnees = null;
//Variable de niveau classe pour la vue Collaborateur
private DataView dvCollaborateur = null;
//Mise à disposition (en lecture seule) de la vue Collaborateur
public DataView VueCollaborateur
{
get
{
return dvCollaborateur;
}
}
public Met_Profil() //Constructeur
{
}
public Met_Profil(AccesDonnees Donnees) //Surcharge du constructeur
{
//Affectation du paramètre Donnees à la variable Donnees
this.Donnees = Donnees;
this.PreparationDonnees();
}
//Méthode qui va regrouper le chargements des données de chaque table.
private void PreparationDonnees()
{
this.Donnees.ChargerCollaborateur();
}
Composants ACCESDONNEES Le chargement du DataSet se fait bien. La source de données est OK.
public AccesDonnees() //Constructeur
{
InitializeComponent();
}
public AccesDonnees(IContainer container) //Surcharge du constructeur
{
container.Add(this);
InitializeComponent();
}
//Chargement des données dans le DataSet
public void ChargerCollaborateur()
{ this.tbaCollaborateur.Fill(this.formStats09DataSet1.COLLABORATEUR);
}
A voir également:
Liaison données dans une application multi-couches
Epitt
Messages postés60Date d'inscriptionsamedi 16 juin 2001StatutMembreDernière intervention 2 mars 2021 18 août 2009 à 11:29
Bon, l'instance Metier n'est pas transmise, car au déboguage il ne va pas lire la surcharge du constructeur du formulaire Profil..!?
J'ai donc transmis l'instance via l'événement Load de ce formulaire, et ça passe.
Les données sont chargées dans le DataSet, mais ne sont pas transmise au BindingSource pourtant situé dans le même événement Load du formulaire. Est-ce que vous voyer pourquoi svp ?
J'y retourne...peut-être que j'y arriverai d'ici 3 ans et demi
Epitt
Messages postés60Date d'inscriptionsamedi 16 juin 2001StatutMembreDernière intervention 2 mars 2021 18 août 2009 à 12:03
J'ai trouvé un maillon manquant pour remonter l'information:
//Méthode qui va regrouper le chargements des données de chaque table.
private void PreparationDonnees()
{
//Appel de la méthode qui va charger les données dans les composants AccesDonnees
this.Donnees.ChargerCollaborateur();
[b] //Affectation de la vue par défaut à la VueCollaborateur
this.dvCollaborateur = this.Donnees.formStats09DataSet1.COLLABORATEUR.DefaultView/b;
}
Toutefois, dès que la méthode "ChargerCollaborateur" est terminée, il retourne directement afficher le formulaire sans remonter les infos. Je ne pige pas