IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

WPF et MVVM : affichage données de plusieurs tables (debutant)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2018
    Messages : 75
    Par défaut WPF et MVVM : affichage données de plusieurs tables (debutant)
    bonjour à tous,

    je débute dans le MVVM, voici mon problème , j'ai une vue qui va afficher des données de plusieurs tables : applications et versions ou une application peut avoir plusieurs versions (donc plusieurs models).

    voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    public partial class ApplicationARV
        {
            public ApplicationARV()
            {
                Logs = new HashSet<Log>();
                Versions = new HashSet<VersionApps>();
            }
     
            public int IdApplication { get; set; }
            public int KeyLicence { get; set; }
            public string CodeName { get; set; }
            public string DisplayName { get; set; }
            public bool? Internal { get; set; }
     
     
            public virtual Licence KeyLicenceNavigation { get; set; }
            public virtual ICollection<Log> Logs { get; set; }
            public virtual ICollection<VersionApps> Versions { get; set; }
        }
     
    public class VersionApps
        {
            protected static object Version_Available;
     
            public static object Version_Installed { get; protected set; }
            public int IdVersion { get; set; }
            public string VersionNumber { get; set; }
            public string PatchNotes { get; set; }
            public string ImageId { get; set; }
            public string ContainerId { get; set; }
            public string ContainerParam { get; set; }
            public string VersionDownloaded { get; set; }
            public string VersionAvailable { get; set; }
            public int? IdApplication { get; set; }
     
            public virtual ApplicationARV IdApplicationNavigation { get; set; }
        }
    et mon fichier ViewModel qui va alimenter ma vue.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    public ApplicationARVViewModel()
            {
     
                LoadApplication();
            }
            public List<Models.ApplicationARV> LoadApplication()
     
            {
                AVSContext _context = new AVSContext();
     
                List<Models.ApplicationARV> ListAppli = new List<Models.ApplicationARV>();
     
                foreach (var appli in _context.Applications.Include(x => x.Versions).Include(x => x.KeyLicenceNavigation).ToList()) 
                {
     
                    ListAppli.Add(appli);
                }
                return ListAppli;
            }
     
     
        }
    mon resultat me retourne une liste d'applicationARV (mon model); mais si je veux récupérer mes versions comment je fais ? car appli.Version[0].NumberVersion ne fonctionne pas,

    en espérant avoir été claire.

    merci de votre aide..

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 987
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 987
    Par défaut
    Avez-vous essayé de mettre un point d'arrêt sur la ligne 19 de ViewModel pour voir ce que contient ListAppli ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2018
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2018
    Messages : 75
    Par défaut
    Bonjour,

    oui je l'ai fait. j'ai une liste de version,mais je ne veux qu'une seule.
    j'ai créé un nouvel objet avec les données que je voulais, et ça fonctionne.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    public List<Models.ApplicationClient> LoadApplication()
     
            {
                AVSContext _context = new AVSContext();        
                List<Models.ApplicationClient> ApplicationClients = new List<Models.ApplicationClient>();
     
                foreach (var appli in _context.Applications.Include(x => x.Versions).Include(x => x.KeyLicenceNavigation).ToList())
                {
                   ApplicationClient appliCli = new ApplicationClient();
                    var Update = false;
     
                    List<VersionApps> versionApps = appli.Versions.ToList();
     
                    if (versionApps.Count > 0)
                    {
     
                            var VersionAvailable = int.Parse(versionApps[0].VersionAvailable.ToString().Replace(".", ""));
                            var VersionNumber = int.Parse(versionApps[0].VersionNumber.ToString().Replace(".", ""));
                            if (VersionAvailable > VersionNumber)
                            {
                                Update = true;
                            appliCli.Update = Update;
                            }
     
     
     
                    }
                    appliCli.DisplayName = appli.DisplayName;
                    appliCli.KeyLicenceStatut = appli.KeyLicenceNavigation.IsValid;
                    appliCli.VersionNumber = versionApps[0].VersionNumber;
     
                    appliCli.Update = Update;
                    ApplicationClients.Add(appliCli);
                }
                return ApplicationClients;
            }
    mais je ne pense pas que ce soit comme ça qu'on doit faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/04/2014, 11h43
  2. [Débutant] Affichage de données sur plusieurs tables.
    Par a.floranc dans le forum ASP.NET
    Réponses: 2
    Dernier message: 13/12/2011, 14h11
  3. [MySQL] Affichage des données de plusieurs tables
    Par loic20h28 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/04/2009, 17h14
  4. Affichage de données sur plusieurs tables
    Par urbalk dans le forum Requêtes
    Réponses: 2
    Dernier message: 21/04/2007, 09h31
  5. [MySQL] affichage de données de plusieurs tables dans un même tableau ?
    Par undebutant dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/03/2007, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo