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

VB.NET Discussion :

DataGridView - Image


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut DataGridView - Image
    Bonjour,

    Dans mon projet j'ai une base de donnée, que j'affiche dans un DataGridView.
    Dans cette base de donnée, j'ai un champ (nommé: classement) qui contient une chaine de caractère. (exemple: '*****' )
    En fonction de cette chaine de caractère, je veus afficher une image dans la cellule de on DataGridView. (si la chaine contient 5 étoiles (*), j'affiche stars_5.bmp , si elle en contient 4, j'affiche une autre image etc.)

    La liaison entre la BDD et le DataGridView fonctionne bien, ma requete m'affiche bien les résultat, seulement, vu que j'ai configuré la colonne 'classement' de mon DataGridView pour qu'elle affiche des images, j'obtiens une erreur. (il n'arrive pas a afficher l'image '*****', logique )

    D'ou ma question:
    Comment lui dire que, lorsque la chaine est égal à '****' je veus qu'il affiche tel image ?

    merci

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Très simple : tu te fais une petite fonction qui te renvoie l'image et dans laquelle tu fais ta correspondance !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //Si tu utilises les images dans tes ressources...
    private readonly Bitmap stars_1 = Properties.Resources.Stars_1;
     
    private Bitmap GetImage(string classement)
    {
        if (classement=="*")
        {
            return stars_1;
        }
        else if (classement == "**")
        {
            ...
        }
    }
    Tu adaptes en VB...

    Et tu appelles cette fonction au moment de remplir la cellule du DGV

    Personnellement, je prévois une image vide dans le cas où il n'y a pas de données ^^

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    Et tu appelles cette fonction au moment de remplir la cellule du DGV
    Je crois que mon soucis viens de la,
    Dans quel événement dois-je mettre cette fonction ?

    Il me faudrais un événement permettant de "formater" les données entre le moment ou elles sont récupérées dans la BDD et le moment ou elles sont affichées. J'ai regardé dans les événements du DataGridView mais je n'ai pas trouvé.

    je prévois une image vide dans le cas où il n'y a pas de données
    Oui, c'était prévus

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Moi je tenterais (car j'ai pas testé) de faire une classe qui herite celle qui te sert à afficher les images (PictureBox ?).

    J'ajoute une proprité à cette classe pour y stocker ce qui vient de ta BDD.
    Je fait le lien binding BDD-Objet sur cette proprieté et non plus directement sur celle où indique le chemin de l'image.

    Ensuite le Set de la nouvelle proprieté je mettrais à jour le Filename (je me trompe peut être de nom) pour afficher la bonne image en fonction de ce que renvoie la BDD.

    C'est une proposition, rien n'est garantie.

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Tu fais de la liaison de données (DataSet, DataTable, DataBinging, ...) ?

    Si c'est le cas, je ne pourrais pas t'aider efficacement car personnellement je ne m'y connais pas assez et je remplis systématiquement mes DGV "à la main" car j'ai des opérations particulières à faire, comme afficher des images de façon conditionnelle, par exemple !

    [EDIT : je réponds à Speranza]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Oui pour le Binding je pensais à ça.
    Ton test pour l'image tu l'aurais placé dans le Property Set de la nouvelle propriété.
    En fonction de ce test tu alimentais le FileName.

    Si tu le remplis à la mimine alors tu dois pouvoir inserer ton code de "traduction" sans pb non ? Dans ta boucle d'alimentation.

    C'est dommage que t'es pas tenté avec le Binding j'aurais été curieux de voir si ça marchais. En toute logique oui...

    [EDIT] Dsl je n'avais pas fait attention [EDIT]

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    Tu fais de la liaison de données (DataSet, DataTable, DataBinging, ...) ?
    Oui, je procéde comme ça (Enfin Visual Studio ma guidé de cette manière, j'ai suivis ) D'ou le fait que je soit un peu perdu.

    En fait, j'ai posé mon DataGridView dans ma Form, il ma demandé la BDD a afficher, je lui ai indiqué ma table et il ma créer les colonnes automatiquement. J'ai régler ces colonne pour que les deux qui doivent contenir des images soit de type 'image' (je ne me souviens plus du terme dsl :s )

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    374
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 374
    Par défaut
    Bonjour,
    cela peut être intéressant http://msdn2.microsoft.com/fr-fr/lib...=printer).aspx
    Bon boulot Jean

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Ok
    je viens de voir que Image est une classe Finale...
    Donc pas d'héritage possible
    Donc Ca ne marche pas

    Désolé

  10. #10
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par Speranza Voir le message
    Oui, je procéde comme ça (Enfin Visual Studio ma guidé de cette manière, j'ai suivis ) D'ou le fait que je soit un peu perdu.
    Mais du coup, tu n'as pas eu à plonger dans le code
    La liaison de données est une méthode très puissante, mais quand on connait pas, on est vite limité !

    J'ai cru comprendre que tu n'es pas très calé en programmation ?
    Je te propose de fouiller dans la msdn sur la liaison de données
    http://msdn2.microsoft.com/fr-fr/lib...33(VS.80).aspx
    Ou de reformuler ta question plus précisément, à savoir :
    [Liaison de données] Comment convertir une donnée en base en objet Image pour une colonne de type DataGridViewImageColumn ou quelque chose comme ça
    Bon courage !

    Citation Envoyé par MaelstroeM Voir le message
    [EDIT] Dsl je n'avais pas fait attention [EDIT]
    Ya pas de mal

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Oui c'est bien l'assistant de connexion ça fait tout et on comprends rien

    Enfin ensuite faut décortiquer la logique de la chose...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    J'ai reussi à faire ton machin enfin un bout.

    Le principe est simple :
    Il faut reprendre l'idée de la classe dérivé sauf qu'il faut faire un contrôle utilisateur. Celui que tu vas lier.
    Par contre je ne sais pas si ca va rentrer dans un DataGrid en tous cas sur une Form sa marche impeck en fonction de la chaîne de caractère qui se trouve dans la BDD l'image change toute seule.

    Pour le DataGrid il va valoir creuser encore un peu et faire un mix avec le lien de JPelli.

    Bon comme c long et que j'ai plus trop de trôp de tps je te donnerais la marche à suivre si tu le demandes.

    Voici les ressources MSDN que j'ai utilisé :

    http://msdn2.microsoft.com/fr-fr/lib...26(VS.80).aspx

    http://msdn2.microsoft.com/fr-fr/lib...3a(VS.80).aspx

    @+

  13. #13
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    y a des apprentis sorciers par ici

    rien ne sert de réinventer la poudre, le datagridview sait faire des images tout seule
    selon le mode de remplissage ca se passe dans le meme évènement
    cellformating par exemple se passe avant de remplir la cellule, on a e.value et on peut le changer

    par contre avant tout ca faut réussir à changer le type de colonne en datagridviewcolumnimage

    ton datagridview est alimenté par dgv.datasource = dataset ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 65
    Par défaut
    Avec une petite recherche Google sur "cellformatting", c'est bien le genre d'événements que je cherchait.
    A priori le problême est résolus, merci a vous
    Je retrouve Visual Studio lundi soir pour faire le test.

    merci encore

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Par défaut
    Alors ça donne quoi ?
    Ca fonctionne ?

Discussions similaires

  1. Image dans DataGridView disparait lors du tri
    Par leon_2 dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/11/2007, 13h03
  2. Réponses: 4
    Dernier message: 03/09/2007, 09h51
  3. Réponses: 1
    Dernier message: 13/08/2007, 12h00
  4. [C#] DataGridView image + texte dans une cellule
    Par nitrous007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/06/2007, 13h08
  5. Choix de 2 images dans un datagridview
    Par screamy145 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/04/2007, 10h27

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