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 :

DataGridView, binder une colonne sur un tableau


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut DataGridView, binder une colonne sur un tableau
    Bonjour !
    je viens vers vous car je commence à galérer sérieusement...
    Mon problème : je voudrais binder une colonne de mon DataGridView sur une occurence d'un tableau, sachant que le DataSource de mon dataGridView est une collection d'objets, dans mes objets j'ai notamment un tableau ...

    j'aimerais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaColonne.DataPropertyName = "MonTableau[i]"
    ou MonTableau est ici :
    MaCollectionD'Objet[i].MonTableau[k]
    une idée de comment faire ca ? (sachant que la traduction "littérale" de ceci ne fonctionne pas, j'ai testé...)
    merci !

  2. #2
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Salut

    Rien compris

    Mais il me semble (pour ce que je crois avoir compris) que tu pourrais dans ta classe objet qui contient un tableau mettre un accesseur sur la colonne souhaitée de on tableau

  3. #3
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    j'ai fini par laisser tomber de lier mon tableau à la colonne de mon gridview, j'ai écris une méthode qui le fait "manuellement", ca m'a pris bien moins de temps.
    mais j'aimerai bien quand même savoir si c'est possible...

    olibara => on ne peut pas lier à une DataGridViewColumn un int[]... il faut le lier à "une" occurrence, une ligne, de ce tableau... ou en tout cas c'est ce que j'aimerai faire...
    je pense que ta solution fonctionnerai si la ligne etait fixe, mais dans mon cas elle est dépendante de la valeur de l'indice...

  4. #4
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Désolé mais c'est toujours tres abstrait et pas clair ton truc

    Si tu montrais un modele de ta classe ?
    Et peut-etre le code de ta solution "a la main"

    Ca aiderait peut - etre à comprendre et mieux t'aider

  5. #5
    Membre éprouvé Avatar de beren.kei
    Inscrit en
    Mai 2008
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mai 2008
    Messages : 135
    Par défaut
    yep j'vais essayer... ca risque d'embrouiller encore plus mais bon ^^

    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
    public class om_Pièce
    {
            //Variables
            public int[] MesCompteurs = new int[30];
    //la suite de ma class...
    }
     
        /// Collection d'objets de type om_Pièces(liste)
        public class Collection : List<om_Pièce>
        {
        }
     
     
    public partial class MaForm: Form
    {
    private void MasquerLignes()
            {
    Collection SourceTrie = Piece_collec.Trier();      //SourceTrie contient mes objets que j'ai filtré
    //Pièce_Collec est la collection de om_Pièces non filtrée
                dgv_Pièces.DataSource = SourceTrie;      //dgv_Pièces est mon DataGridView qui à des colonnes ajoutées manuellement
     
                for (int k = 0; k < SourceTrie.Count; k++)
                {
                    string uneRef = SourceTrie[k].Reference;
                    int j = 0;
                    bool trouve = false;
                    while (j < Piece_collec.Count && !trouve)
                    {
                        trouve = false;
                        if (uneRef == Piece_collec[j].Reference)
                        {
                            for (int i = 0; i < PlanCourant; i++)
                            {
                                if (Piece_collec[j].MesCompteurs[i] != 0)
                                {
                                    dgv_Pièces.Rows[k].Cells["Plan" + (i + 1).ToString()].Value = Piece_collec[j].MesCompteurs[i];
    //dans la colonne "PlanXY" j'écris à la main mes données, je voudrais les //binder sur MesCompteurs[i] pour ne pas avoir à parcourir toutes les lignes //de mon GridView
                                }
                            }
                            trouve = true;
                        }
                        j++;
                    }
                }
            }
    voilà, dis moi si tu y vois plus clair

  6. #6
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Tripatouiller la grille directement est à éviter le plus possible. Ca fait bobo aux perfs pour des raisons que je détaillerai pas ici, mais lire cet article est très instructif.

    Le plus simple, c'est de rajouter une propriété qui va bien dans l'objet bindé à la grille.

    Donc si tu veux afficher le 5e élément (vive Bruce Willis ! ) dans une colonne de ta grille, rajoute une propriété à om_Pièce :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public int CinquiemeElement { get { return this.MesCompteurs[4]; } }
    Et binder ta grille sur la propriété "CinquiemeElement".

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/05/2012, 20h24
  2. Réponses: 7
    Dernier message: 27/04/2012, 17h06
  3. Filtre et tri sur l'en-tête d'une colonne d'un tableau
    Par davidtse dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 25/11/2010, 10h20
  4. Comment nettoyer une colonne sur un tableau
    Par Tinien dans le forum Excel
    Réponses: 1
    Dernier message: 30/09/2008, 17h00
  5. Réponses: 4
    Dernier message: 27/05/2008, 23h43

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