Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Image dans DataGridView [ Windows / Formulaire / Winforms / Controls ] (Le grand Jisay)

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é 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 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 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 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 comment je ecri text sur in image [ par sidi100 ] je un image et je text box sur form .je veux quand je ecris text dans text box . je trouverai la text coller sur l`image et peux enrigster l nivou message box comme image [ par dadidadidadi ] Bonjour !je veut faire un message box dans une image lorsque le sourit entre dans la zone du bouton .l'image que je doit afficher comme celui ici:


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC G1

Entre 449€ et 449€


Photothèque Nouveau !



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
Temps d'éxécution de la page : 10,483 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.