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 :

binder dataGridView à une propriété d'un objet contenu dans un autre objet


Sujet :

C#

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut binder dataGridView à une propriété d'un objet contenu dans un autre objet
    Bonjour,

    Je vous explique la configuration du programme.

    J'ai tout d'abord une classe Produit avec divers propriétés, dont la propriété nom.

    Ensuite j'ai une classe Consommation qui contient comme propriété Un produit et une quantité.

    et une dernière classe Commande qui comprend une liste de consommations.

    Est-il possible de binder un dataGridView à mon objet Commande et afficher le nom du produit et la quantité ?

    Merci pour votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Developpeur
    Inscrit en
    Février 2013
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Février 2013
    Messages : 180
    Points : 271
    Points
    271
    Par défaut
    oui bien sur
    dans la propriété datasource du datagridview vous lui donnée une bindingList(of Consomation) (qui doit être égale a votre objet commande je suppose)
    et toujours dans les propriétés Visible du datagridview vous pouvez choisir de ne pas afficher certaine colonne

    Cordialement

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 171
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    Merci de te pencher sur mon problème.

    Justement ce n'est pas aussi simple. Je vais l'expliquer avec du code ce sera sans doute plus simple.

    Tout d'abord il s'agit programme qui permet de gérer un bar ( consommations + stock )

    Tout d'abord une classe Produit, qui représente soit un alcool, un soft ou un snack.

    je crée trois listes de boutons, boutons créés à partir des produits, listes liées au type de boisson.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    List<Button> boutonsBieres = new List<Button>();
    List<Button> boutonsSofts   = new List<Button>();
    List<Button> boutonsSnacks = new List<Button>();
    j'affiche ensuite les boutons dans un panel. l'objet Produit est passé au bouton par sa propriété Tag.

    Nom : Capture.PNG
Affichages : 171
Taille : 224,1 Ko

    Ensuite une deuxième classe Consommation.

    Lors que l'utilisateur clique sur un bouton, un objet consommation est créé, avec comme propriétés, le produit (récupéré du Tag du bouton ) et la quantité ( on compte le nombre de fois qu'a été cliqué le bouton ).

    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
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace GestionBar
    {
        class Consommation
        {
            private Produit ProduitCommande;
            private int Quantite;
     
            public Produit produitCommande
            {
                get{ return ProduitCommande; }
                set { produitCommande = value; }
            }
     
            public int quantite
            {
                get { return Quantite; }
                set { Quantite = value; }
            }
     
            public Consommation(Produit produitCommande, int quantite)
            {
                ProduitCommande = produitCommande;
                Quantite = quantite;
            }
        }
    }
    Ces consommations sont ajoutées à un objet commande. objet qui a comme propriété une liste de consommations.

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Collections;
     
    namespace GestionBar
    {
        class Commande
        {
            private List<Consommation> ListeConsommations;
            private Consommation consommation;
     
            public Commande()
            {
                ListeConsommations = new List<Consommation>();
            }
     
            public List<Consommation> listeConsommations
            {
                get { return ListeConsommations; }
            }
     
            private int IndexOf(Produit produit)
            {
                int index = -1;
                for (int i = 0; i < ListeConsommations.Count; i++)
                {
                    if (ListeConsommations[i].produitCommande == produit)
                    {
                        index = i;
                        break;
                    }
                }
                return index;
            }
     
            public void Add(Produit produit)
            {
                int index = this.IndexOf(produit);
     
                if (index == -1)
                {
                    consommation = new Consommation(produit, 1);
                    this.ListeConsommations.Add(consommation);
                }
                else
                {
                    this.ListeConsommations[index].quantite++;
                }
            }
     
            public void Remove(Produit produit)
            {
                int index = this.IndexOf(produit);
     
                if (index != -1)
                {
                    if (this.ListeConsommations[index].quantite == 1)
                    {
                        this.ListeConsommations.Remove(this.ListeConsommations[index]);
                    }
                    else
                    {
                        this.ListeConsommations[index].quantite--;
                    }
                }
            }
        }
    }
    et c'est en fait cette commande que je veux afficher dans le datagridview, mais en n'affichant que le nom du produit et la quantité ( le nombre de fois qu'on a cliqué sur le produit ).

    J'espère que ça éclaircit la situation.

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/01/2013, 10h42
  2. Initialisation d'un objet contenu dans un autre.
    Par Bouteille dans le forum Langage
    Réponses: 6
    Dernier message: 29/01/2012, 12h51
  3. Accéder à une variable d'un objet contenu dans une collection
    Par derlone dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/04/2009, 16h50
  4. Réponses: 3
    Dernier message: 07/04/2009, 09h52
  5. [POO] objet mysql dans un autre objet
    Par ibasticour dans le forum Langage
    Réponses: 5
    Dernier message: 17/05/2008, 23h19

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