Datagridview Charger Image

Résolu
cs_roro69 Messages postés 70 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 29 septembre 2018 - 20 déc. 2015 à 11:37
cs_roro69 Messages postés 70 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 29 septembre 2018 - 20 déc. 2015 à 21:41
Bonjour,

Dans le code ci après je remplis un datagridview depuis une base de donnée; dans la colonne 2 j'ai le chemin complet d'une image ; j'ai crée une troisième colonne datagridview image ; mais lorsque je charge mon projet j'ai la même image sur tout la colonne ; quelle code dois je mettre pour avoir les images en relation avec la colonne du chemin de l'image.
Merci de votre aide et du temps consacré.
Voici le code:

Public Sub DBremplirListe(ByRef LST As DataGridView)
'Requete
Dim cmd = New SQLiteCommand("SELECT Nom,Chemin FROM LivreImage", CON)
'Création du dataset
Dim ds As DataSet = New DataSet()

Dim DR1 As New SQLiteDataAdapter(cmd)
'Chargement
DR1.Fill(ds)
'Remplissage duDatagridview
LST.DataSource = ds.Tables(0).DefaultView
'Création d'un colonne image dans le datagridview
Dim img As New DataGridViewImageColumn()
img.HeaderText = "Image"
img.Name = "img"
LST.Columns.Add(img)
'Récuperation de chemin de l'imahe
Dim inImg As Image = Image.FromFile(LST.Item(1, 1).Value)
img.Image = inImg
img.ImageLayout = DataGridViewImageCellLayout.Stretch
LST.Rows(0).Height = 100
LST.Columns(1).Visible = False
DR1.Dispose()
End Sub

--Merci

3 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 déc. 2015 à 16:13
Bonjour
Tu dis : "dans la colonne 2 j'ai le chemin complet d'une image"
Chaque ligne de cette colonne a un chemin différent pour une image différente ! Si tu ne fais pas intervenir la ligne de cette image dans ton code tu as la même image qui s'affiche sur chaque ligne
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
20 déc. 2015 à 16:19
 Dim inImg As Image = Image.FromFile(LST.Item(1, 1).Value)


LST.Item devrait avoir en paramètre la ligne et la colonne
Or là la ligne est toujours la deuxième ligne
0
cs_roro69 Messages postés 70 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 29 septembre 2018
20 déc. 2015 à 18:02
Bonsoir ;
Merci pour ta réponse ;;
Je viens de comprendre que je donnais à la variable inImg toujours la même valeur ;......
Mais alors la ou je bloque c'est comment récupérer la valeur pour chaque ligne; dois je boucler sur chaque item et appeler Image from file à chaque fois???
Merci pour l'aide apporté
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 20/12/2015 à 20:00
Bonjour,
Il est de toutes manières selon moi déraisonnable d' "inonder" ton appli de toutes ces images (c'est très gourmand").
Il serait bien plus sage de n'utiliser qu'un seul contrôle d'affichage qui "présenterait" l'image adéquate au survol de la grille, selon la ligne survolée. A faire par exemple dans l'évènement CellMouseMove de ta grille.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
cs_roro69 Messages postés 70 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 29 septembre 2018
Modifié par cs_roro69 le 20/12/2015 à 21:42
Bonsoir Ucfoutu;
Merci pour ta réponses ; je pense que je vais choisir ta solution car il est vrai que arrivé à un certain nombre d'image ; ceci risque de devenir assez rapidement indigeste. Mais je souhaitais simplement pour ma connaissance personnel savoir comment arrivé au résultat demand2.
Encore merci de tes judicieux conseils et de ton aide apporté et temps consacré.
0
cs_roro69 Messages postés 70 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 29 septembre 2018
20 déc. 2015 à 21:37
Bonsoir ;
merci à toi vb95 j'ai trouvé la solution avec une boucle ; j'ajoute le code si jamais çà pouvais interessé quelq'un un jour:

Public Sub DBremplirListe(ByRef LST As DataGridView)
'Requete
Dim cmd = New SQLiteCommand("SELECT Nom,Chemin FROM LivreImage", CON)
'Création du dataset
Dim ds As DataSet = New DataSet()

Dim DR1 As New SQLiteDataAdapter(cmd)
'Chargement
DR1.Fill(ds)
'Remplissage duDatagridview
LST.DataSource = ds.Tables(0).DefaultView
'Création d'un colonne image dans le datagridview
Dim img As New DataGridViewImageColumn()
img.HeaderText = "Image"
img.Name = "img"
LST.Columns.Add(img)
'Récuperation de chemin de l'imahe

img.ImageLayout = DataGridViewImageCellLayout.Stretch
For i As Integer = 0 To LST.RowCount - 1

LST.Rows(i).Height = 100
LST.Rows(i).Cells(2).Value = DirectCast(Image.FromFile(LST.Item(1, i).Value), Image)
Next
LST.Columns(1).Visible = False
DR1.Dispose()
End Sub

Encore merci pour le temps consacré et les connaissances partagées
--
0
Rejoignez-nous