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

Windows Forms Discussion :

Liste de listes d'objets dans un DataGridView


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut Liste de listes d'objets dans un DataGridView
    Bien le bonjour,

    Voilà, j'ai une question sur un sujet assez sensible sur lequel je travaille, j'ai besoin d'afficher dans un datagridview une liste de listes d'objets (oui oui, vous m'avez bien entendu).
    Et voilà, malheureusement, je ne vois pas comment je pourrais procéder (et donc le coder).

    Si quelqu'un aurait une solution magique (ou une bribe de solution), je suis preneur =)

    Merci d'avance pour celui ou celle, ou ceux ou celles qui m'aidera(ont).

    PS : Le best du best serait que ce code soit utilisable pour n'importe quelle chose acceptant un DataSource mais là, c'est peut-être trop en demander ^^

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    Bonjour,
    j'avais utilisé il y a quelques temps le contrôle TreeGridView, disponible ici qui pourrait éventuellement répondre à tes besoins

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Il faut que ton objet expose des propriété (Bien que si ça se trouve l'exposition direct des variables doit fonctionner aussi mais c'est moins propre).

    Ensuite tu met ta liste d'objet en tant que datasource de ta grille.

    Ensuite soit tu met la propriété de la grille autogeneratecolumu à true ce qui créera automatiquement une colonne pour chaque propriété du type d'objet dans la datasource.

    Soit tu crées les colonnes à la main et tu renseignes la propriété datapropertyname par le nom de la propriété (en string).

    Pour une listbox tu peux utiliser la propriété displaymember pour designer (toujours par son nom) la propriété de l'objet qui est affiché sous forme de texte. La propriété selectedItem du listbox renvoyant toujours l'objet dans sa globalité.

    Pour un combobox le principe est semblable.

    Il y a quelque subtilité si tu veux que ton datagridview gère les modifications de ton objet (qui ne proviennent pas de la grille). Il faut rechercher du coté de l'implémentation de l'interface IPropertyChange.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Tout d'abord, merci pour les réponses (c'est cool de savoir qu'on est pas tout seul à avoir galérer sur ce sujet ^^).

    @Aeronia : Malheureusement, le TreeGridView n'est pas utilisable dans mon cas, car la hiérarchie par arbre ne rendrait pas la lecture des données facilement lisible.

    @sinople : Bien entendu que j'utilise des propriétés... on touche pas à mes variables ! xD
    Ce n'est pas une liste d'objet que je veux mettre en datasource... mais la liste de listes d'objets ^^

    Je vais essayer de m'expliquer plus ou moins clairement :
    1°) J'ai un produit qui a plusieurs propriétés qui ont une certaine valeur à un temps T (mon objet créé est donc un Produit à T)
    2°) Je dois afficher toutes les valeurs de mon produit à tous les temps Tx.
    3°) Seulement, afficher un seul produit serait bien trop facile... Je dois afficher dans un même DataGridView les valeurs de plusieurs produits à tous les temps Tx.

    Ce dont Aeronia a parfaitement compris en fait, mais le problème étant l'affichage. Je dois (malheureusement, vive les contraintes) gardé l'affichage d'un DataGridView.

    Si je devais "dessiner" l'exemple, ça ressemblerait à ceci :
    ______ V1 Produit A _ V2 Produit A _ V1 Produit B _ V2 Produit B _ etc
    Tps 1 -|----120-----|------1------|----160-----|------2------|----
    Tps 2 -|----125-----|------1------|----165-----|------2------|----
    Tps 3 -|----122-----|------1------|----170-----|------2------|----
    Tps 4 -|----130-----|------1------|----150-----|------2------|----

    HS : C'pas facile de "dessiner" en "ASCII" XD

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    J'avais du faire ce genre d'interface, sauf que comme colonne, je n'avais pas les articles, mais des périodes de temps (des mois précisément)

    Voir pièce jointe pour aperçu.

    J'avais dès lors utiliser des colonnes avec un width très faible et un BackColor noir comme séparateur.

    A voir si ça pourrait convenir dans ton cas.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 10
    Par défaut
    Tu as donc utilisé le TreeGridView pour en arriver là si j'ai bien compris.
    Je vais voir ce que je peux en faire et voir si ça vaut le coup, j'vous mets au jus de toute façon.

    Merci en tout cas pour l'aide ^^

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Ok désolé j'avais loupe la liste dans la liste !

    Je t'aurais bien proposé de voir du coté du datagridview imbriqué mais c'est pas vraiement géré avec le composant standard de microsoft en Winform tout du moins (je dis pas que c'est infaisable de dériver la classe si t'as une année à perdre (P.S. Fait en un projet open source ça va interesser du monde)). Il y a des solutions payante du coté de contrôle tierce partie.

    Il y a aussi quelques projets open source de contrôle home made qui font un truc du style à partir du TreeView (avec plus ou moins de succès).

    Sinon selon l'exemple que tu as montré (qui ressemble pas mal au jpg Aeronia), à part créer une dataTable "tampon" avec des colonnes créer dynamiquement en fonction du nombre d'objet.

    Après il faut voir si tu as besoin uniquement de la lecture ou de l'écriture aussi. Parce que ça change passablement la donnée de l'exercice !

  8. #8
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Par défaut
    L'exemple que j'ai montré est fait avec une DataGridView normale, c'est en fait une feuille de calcul paramétrable.

    Voici un exemple d'utilisation simple d'une TreeGridView (voir pièce jointe)

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/05/2014, 17h22
  2. Regrouper une liste en liste de listes
    Par West01 dans le forum Prolog
    Réponses: 12
    Dernier message: 14/03/2008, 14h07
  3. Afficher une collection d'objets dans une datagridview
    Par thorgal1612 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/04/2007, 17h38
  4. [Swing][JList] Placer un Objet dans une liste
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 17/02/2006, 10h31
  5. Modifier l'ordre des objets dans dans une liste
    Par Mac_Gyver dans le forum Access
    Réponses: 2
    Dernier message: 24/01/2005, 11h55

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