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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 )

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