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 :

Mettre datagridview dans une cellule d'un autre datagridview


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut Mettre datagridview dans une cellule d'un autre datagridview
    Bonjour,

    J'essaye depuis un bon moment de mettre un datagridview dans une cellule de mon datagridview principal. En gros, la colonne contiendra a chaque nouvelle ligne, un datagridview.
    J'ai crée un datagridview :
    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
    DataGridView essai = new DataGridView();
     
    essai.ColumnCount = 13;
    essai.Columns[0].Name = "taille1";
    essai.Columns[1].Name = "taille2";
    essai.Columns[2].Name = "taille3";
    essai.Columns[3].Name = "taille4";
    essai.Columns[4].Name = "taille5";
    essai.Columns[5].Name = "taille6";
    essai.Columns[6].Name = "taille7";
    essai.Columns[7].Name = "taille8";
    essai.Columns[8].Name = "taille9";
    essai.Columns[9].Name = "taille10";
    essai.Columns[10].Name = "taille11";
    essai.Columns[11].Name = "taille12";
    essai.Columns[12].Name = "taille13";
     
    essai.Rows.Add();
    essai.Visible = true;
     
    essai.AutoResizeRows(DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders);
     
    essai.Dock = DockStyle.Fill;
    essai.BackgroundColor = Color.LightGray;
    essai.BorderStyle = BorderStyle.Fixed3D;
     
    essai.AllowUserToAddRows = false;
    essai.AllowUserToDeleteRows = false;
    essai.AllowUserToOrderColumns = true;
    essai.ReadOnly = true;
    essai.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
    essai.MultiSelect = false;
    essai.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None;
    essai.AllowUserToResizeColumns = false;
    essai.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
    essai.AllowUserToResizeRows = false;
    essai.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
     
    essai.DefaultCellStyle.SelectionBackColor = Color.White;
    essai.DefaultCellStyle.SelectionForeColor = Color.Black;
    essai.RowHeadersDefaultCellStyle.SelectionBackColor = Color.Empty;
    essai.RowsDefaultCellStyle.BackColor = Color.LightGray;
    essai.AlternatingRowsDefaultCellStyle.BackColor = Color.DarkGray;
     
    essai.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
    essai.ColumnHeadersDefaultCellStyle.BackColor = Color.Black;
    essai.RowHeadersDefaultCellStyle.BackColor = Color.Black;
    Là tout va bien je pense, mais après j'essaye de l'insérer dans une cellule mais rien à faire je trouve pas le moyen de faire ça.
    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataGridView1.Columns[7].ValueType = essai.GetType();
    dataGridView1.Rows[ligne].Cells[7].Value = essai;
    Mais ça marche pas. Si quelqu'un a une idée ...
    Merci d'avance

  2. #2
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    J'ai trouvé ça : http://msdn.microsoft.com/fr-fr/library/7tas5c80.aspx

    Mais j'arrive pas à l'adapter pour résoudre mon problème.

  3. #3
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Je pense que la Value des cellules devrait être un buffer ou une string représentant la "sérialization" du contenu des DataGridiview filles, ces DataGridView se créant automatiquement et étant initialisées à partir de la sérialization du contenu par la fonction InitializeEditingControl().

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Salut tokyoite, tout d'abord pourquoi voudrais tu mettre des DataGridView dans une DataGridView? Je ne vois pas bien l'intérêt ...

    Ne chercherais-tu pas plutôt à simplement avoir plusieurs cellules par ligne seulement dans la colonne visée?

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Tout d'abord merci pour vos réponses.

    Grafitto, je vais me pencher la dessus.

    En fait j'ai besoin de faire ça pour un logiciel de gestion de stock d'une boutique de pret à porter. Pour chaque vêtement (une ligne d'un datagridview), il y a plusieurs taille (par exemple : 36 38 40 42 ... ou S M L XL). Donc pour la colonne taille, j'ai besoin de deux lignes, une ligne qui affiche les tailles choisi et une ligne avec les quantités. Mais ces deux lignes doivent être dans la ligne du vêtement.

    36 38 40 42
    2 5 2 2

    ca aurai pu être simple si les tailles étaient toujours les mêmes mais c'est pas le cas, il y a plein de notation différente pour les tailles.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Dans ce cas là je pense qu'il est plus approprié de faire une liste de chaînes de caractères (string) plutôt qu'un DataGridView.

    Si tu préfères avoir des cellules distinctes pour chaque taille, tu n'as pas d'autre choix que d'attribuer une ligne pour chaque taille de chaque produit, puis de fusionner ensuite les cellules proches ayant la même valeur.

  7. #7
    Expert confirmé Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Par défaut
    Si les DataGridView filles ne sont utilisées que pour de la visualisation (i.e. en mode ReadOnly), il serait plus simple de :
    • définir la colonne comme une colonne texte usuelle,
    • mettre le contenu des 2 lignes dans la Value de la cellule (exemple "36 38 40 42/2 5 2 2)
    • utiliser l'event CellPainting de la DataGridView "mère" pour dessiner un tableau de 2 lignes (Taille et Qté) de n cellules.

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/07/2014, 16h46
  2. [LibreOffice][Tableur] Mettre informations dans une cellule depuis InputBox
    Par phildu80 dans le forum OpenOffice & LibreOffice
    Réponses: 7
    Dernier message: 28/06/2014, 11h01
  3. Cacher/montrer un DIV dans une cellule contenant un autre DIV
    Par Unusual dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 31/08/2012, 15h37
  4. Réponses: 6
    Dernier message: 16/06/2011, 12h45

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