begin process at 2012 02 11 10:37:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Windows

 > 

Formulaire / Winforms / Controls

 > 

Image dans DataGridView


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Image dans DataGridView

vendredi 28 décembre 2007 à 13:18:08 | Image dans DataGridView

Le grand Jisay

Bonjour tout le monde,

Voici mon problème, j'ai une application qui gère un stock de CD. J'ai un datagridview qui contient les colonnes avec le nom de l'artiste, le nom de l'album et la quantité restante en stock.
J'ai ajouté une colonne de type DataGridViewImageColumn pour pouvoir afficher une image. Cette image doit être différente si le stock est supérieur à 0 ou si il est égal à 0. Donc si la valuer dans la colonne "En Stock" est de 0 alors je mets une petite image avec une croix.

J'ai trouvé un petit quelque chose sur la MSDN : [ Lien ]
Mais cette source m'affiche la même image partout dans la colonne et j'ai besoin d'images différentes.

J'ai aussi trouvé sur le forum une piste : http://www.csharpfr.com/infomsg_DATAGRIDVIEW-PICTUREBOX_990638.aspx
Mais alors si je fais comme cela, j'ai une erreur assez impressionnante qui s'affiche. J'ai une erreur pour chaque ligne ou je mets une image et l'image s'affiche sur la dernière ligne du DataGridView (où il n'y a pas d'enregistrements).

Je vous donne le code que j'ai pour le moment :

        //je remplis mon DataGridView quand je sélectionne un nom d'artiste dans une combobox

        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.cdsDataSet1.Clear();
            this.sqlDataAdapter1.SelectCommand.Parameters["@nom_artiste"].Value = this.toolStripComboBox1.Text;
            this.sqlDataAdapter1.Fill(cdsDataSet1);
            this.dataGridView1.Visible = true;

            // Ceci c'est le code présent sur la MSDN

            /*Icon treeIcon = new Icon(@".\1364.ico");
            DataGridViewImageColumn iconColumn = new DataGridViewImageColumn();
            iconColumn.Image = treeIcon.ToBitmap();
            iconColumn.Name = "Tree";
            iconColumn.HeaderText = "Nice tree";
            dataGridView1.Columns.Insert(3, iconColumn);*/

            icone();
        }

        // fonction pour le remplissage

        public void icone()
        {

            // Code que j'ai trouvé sur le forum (génère une grosse erreur)
            foreach (DataGridViewRow line in this.dataGridView1.Rows)
            {
                //le try ne sert a rien => toujours une erreur et je ne gère pas le fait que le stock soit plus grand que 0
                // ou bien égal à 0...
                try
                {
                    line.Cells[3].Value = Bitmap.FromFile(@".\croix.jpg");
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }


Voila, je me permet de vous demander votre aide, je suis resté bloqué sur ce petit problème pendant 2heures

Merci d'avance,

Le Grand Jisay
vendredi 28 décembre 2007 à 13:32:04 | Re : Image dans DataGridView

coq

Administrateur CodeS-SourceS
Salut,

Et quelle est l'erreur ?



/*
coq
MVP Visual C#
CoqBlog
*/
vendredi 28 décembre 2007 à 13:44:36 | Re : Image dans DataGridView

Le grand Jisay

Salut,

J'ai une grande boite de dialogue dans laquelle il est écrit un pas mal de lignes.

L'erreur est du type System.FormatException: Cast non valide de 'System.String' en 'System.Drawing.Image'. --->System.InvalidCastExcept en 'System.Drawing.Image'.

Après il y a pas mal de texte mais je ne sais pas comment copier coller.

Et à la fin il est aussi écrit :

Pour remplacer cette boîte de dialogue par défaut, traitez l'événement DataError.

J'ai bien compris qu'il n'était pas possible de convertir une chaine de caractère en image mais je ne vois pas comment corriger ma faute...

Meri de ton aide coq,

Le Grand Jisay
vendredi 28 décembre 2007 à 14:07:59 | Re : Image dans DataGridView

coq

Administrateur CodeS-SourceS
Ben tu essaies de placer un type Image dans une colonne destinée à recevoir un type String, donc forcément il n'apprécie pas.
Je te conseille de jeter un oeil à ceci : Comment : personnaliser la mise en forme des données dans le contrôle DataGridView Windows Forms


/*
coq
MVP Visual C#
CoqBlog
*/
vendredi 28 décembre 2007 à 14:24:49 | Re : Image dans DataGridView

Le grand Jisay

Réponse acceptée !
J'ai trouvé le problème.
Et non, ce n'était pas ca le problème, j'avais bien placé ma colonne en DataGridViewImageColumn en manuel. En manuel (en cliquant sur la flèche en haut du datagridview en mode design et dans Modifier la colonne) j'avais cette erreur. J'ai alors donc supprimé carrément la colonne et je l'ai recréé par programmation. Comme ceci :
            DataGridViewImageColumn iconColumn = new DataGridViewImageColumn();
            dataGridView1.Columns.Insert(3,iconColumn);

Et la le code que j'ai placé fonctionne impec.

Je donne le code pour ceux que ca pourrait interressé...

//je remplis mon DataGridView quand je sélectionne un nom d'artiste dans une combobox

        private void toolStripComboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.cdsDataSet1.Clear();
            this.sqlDataAdapter1.SelectCommand.Parameters["@nom_artiste"].Value = this.toolStripComboBox1.Text;
            this.sqlDataAdapter1.Fill(cdsDataSet1);
            this.dataGridView1.Visible = true;
            icone();
        }

        // fonction pour le remplissage de la colonne

        public void icone()
        {
            DataGridViewImageColumn iconColumn = new DataGridViewImageColumn();
            dataGridView1.Columns.Insert(3,iconColumn);
           
            for(int i = 0 ; i<this.dataGridView1.Rows.Count-1;i++)
            {
                if (this.dataGridView1.Rows[i].Cells[2].Value.ToString() == "0")
                {
                    this.dataGridView1.Rows[i].Cells[3].Value = (Image)Bitmap.FromFile(@".\croix.bmp");
                }
                else
                {
                    this.dataGridView1.Rows[i].Cells[3].Value = (Image)Bitmap.FromFile(@".\ok.bmp");
                }
            }
        }

Et voila, je ne sais toujours pas pourquoi l'erreur s'est produite quand j'ai modifié la colonne DataGridViewTextBoxColumn en DataGridViewImageColumn en manuel, mais le code que j'ai placé fonctionne. Ne me reste plus qu'a accepter la réponse et à te remercier coq pour avoir chercher à élucider mon problème.

A+,

Le Grand Jisay


Cette discussion est classée dans : erreur, image, datagridview, stock, iconcolumn


Répondre à ce message

Sujets en rapport avec ce message

DataGridView : PictureBox [ par pitch6969 ] Bonjour je voudrais savoir s'il est possible de rajouter une image sur un datagridview, les images que je veux ajouter ne sont pas stocker dans la bas datagridview selection d'une ligne [ par jesaipa_1 ] Slt a tous je cherche le code qui me permet de selectionner une ligne de ma datagridviewj'ai deja essayer ce code :this.datagridview1.selectedrows[2]; erreur commande update [ par adnanester ] salut voici le message d'exception que j'ai quand j'essaie de faire la commande update a ma base de données a une colonne de type "SqlDbType.Image" Image de fond dans un Datagridview [ par virturel ] Bonjour,Je cherche à afficher un datagridview avec une image de fond (dans une winform en c#) qui ne soit pas masquée, ni par les ligne du datagridvie Image dans en-tête DataGridView [ par Warwick ] Bonjour, savez-vous s'il est possible d'afficher une image dans un en-tête de colonne de DataGridView ? Le but est d'afficher par exemple un petit cad changer les coordonnées d'une image ! [ par tix116 ] bonjour/bonsoir; j'ai un petit problème qui me tracasse depuis quelques jours j'essaye de changer les coordonnées d'une image mais a chaque fois il m' save d'une copie d'image : erreur générique GDI+ [ par SpongeBobSquarePants ] Bonjour, Je rencontre actuellement une erreur d'exécution dont je n'arrive pas à trouver la cause. Petit résumé : J'ai écrit un bout de code permet Tri sur un datagridview [ par rangdalf ] Bonjour, Je développe une application winforms en C# 2.0 J'ai un datagridview lié à un datatable rempli de données. J'ai une fonction qui rajoute une Dessiner une image dans un printdocument [ par choukri175 ] Salut,je voudrais déssiner une image dans mon printdocument, alors j'ai procédé comme suit :dans l'événement printpage de printdocument, j'ai mis les image datagridview [ par Cyril6033 ] Bonjour, est-ce que quelqu'un sait comment faire pour mettre une image sur un bouton d'un DataGridView.Mon bouton est créé avec DataGridViewColumnButt


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,700 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales