none
Image DatagridView RRS feed

  • Question

  • Bonjour

    le Sujet a deja ete aborde mais les solutions proposees ne fonctionnent pas chez moi. A la place des Images j'obtiens le une belle croix..... si quelqu un a une idee.... voici mon code

           
     Dim Table As New DataTable
            Req = "select livre_couverture,numlivre, livre_nom from livres where livre_couverture<>'\AppData\Roaming\IP Pourrieres\winbiblio-2\Couvertures\livre.jpg' order by livre_nom"
            RsDonnees.Open(Req, Cnx)
            Dim da As New System.Data.OleDb.OleDbDataAdapter()
            Dim ds As New DataSet()
            da.Fill(ds, RsDonnees, "Livres")
            DataGridView1.DataSource = (ds.Tables("livres"))
            DataGridView1.Item(1, 1) = New DataGridViewImageCell
            Dim Couverture = "c:\users\" & Environment.UserName & DataGridView1.Rows(0).Cells(1).Value
            DataGridView1.Rows(0).Cells(0).Value = System.Drawing.Image.FromFile(Couverture)
            DataGridView1.Columns.Item(1).HeaderText = "Titre Livre"
            DataGridView1.Columns.Item(1).HeaderText = "Couverture"
            DataGridView1.Columns.Item(1).Width = 500
            DataGridView1.Columns.Item(3).Width = 700
    

    le code n est pas fini bien sur. il manque la boucle de lecture mais je bloque sur l affichage d une image.... 

    Merci de votre aide.

    Thierry

    dimanche 12 mars 2017 07:10

Réponses

  • Peut être que vous avez un mauvais chemin dans:

    Dim Couverture = "c:\users\" & Environment.UserName & DataGridView1.Rows(0).Cells(1).Value

    est-ce que un "\" est nécessaire avant  & DataGridView1.Rows(0).Cells(1).Value?

    Sans regarder votre accès à une liste dans les données de votre table voici comment créer une colonne "Couverture":

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ' Emplacement de la Form
            Me.Location = New Point(150, 150)
    
            Me.SuspendLayout()
    
            ' Image vide qui permet de définir le format des couvertures
            Dim imageVide As Bitmap = Bitmap.FromFile(Application.StartupPath & "\couvertureVide.jpg")
            ' Définition de la hauteur de Row pour contenir la couverture
            DataGridView1.RowTemplate.Height = imageVide.Height / 4 + 2 * 6 + 1
    
            ' Définition de la colonne qui va contenir les ImageCell à insérer dans le DGV1 en Colonne1
            Dim colCouverture As New DataGridViewImageColumn
            colCouverture.Name = "Couverture"
            colCouverture.HeaderText = "Couverture de l'ouvrage"
            colCouverture.Width = imageVide.Width / 4 + 2 * 6 + 1
    
            colCouverture.Image = imageVide
            colCouverture.ImageLayout = DataGridViewImageCellLayout.Stretch
            colCouverture.Description = "Vide par défaut"
    
            DataGridView1.Columns.Add(colCouverture)
            ' Insertion de la colonne 2 Nom de livre...
    
            DataGridView1.Columns.Add("Nom", "Nom de l'ouvrage")
    
            'Création des Rows
            DataGridView1.RowCount = 8
    
    
            ' Pour exemple chargement d'image et insertion dans les rangs
            Dim imgCouverture As Bitmap
            imgCouverture = Bitmap.FromFile(Application.StartupPath & "\couvertureExemple.jpg")
            ' Remplissage de la première colonne avec l'image de couverture et la deuxième avec un nom pour tous les Rows
            For intRow As Integer = 0 To 7
                DataGridView1.Rows(intRow).Cells(0).Value = imgCouverture
                DataGridView1.Rows(intRow).Cells(1).Value = "Livre " & intRow.ToString
            Next
    
            Me.ResumeLayout()
    
        End Sub


    dimanche 12 mars 2017 11:50

Toutes les réponses

  • Peut être que vous avez un mauvais chemin dans:

    Dim Couverture = "c:\users\" & Environment.UserName & DataGridView1.Rows(0).Cells(1).Value

    est-ce que un "\" est nécessaire avant  & DataGridView1.Rows(0).Cells(1).Value?

    Sans regarder votre accès à une liste dans les données de votre table voici comment créer une colonne "Couverture":

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            ' Emplacement de la Form
            Me.Location = New Point(150, 150)
    
            Me.SuspendLayout()
    
            ' Image vide qui permet de définir le format des couvertures
            Dim imageVide As Bitmap = Bitmap.FromFile(Application.StartupPath & "\couvertureVide.jpg")
            ' Définition de la hauteur de Row pour contenir la couverture
            DataGridView1.RowTemplate.Height = imageVide.Height / 4 + 2 * 6 + 1
    
            ' Définition de la colonne qui va contenir les ImageCell à insérer dans le DGV1 en Colonne1
            Dim colCouverture As New DataGridViewImageColumn
            colCouverture.Name = "Couverture"
            colCouverture.HeaderText = "Couverture de l'ouvrage"
            colCouverture.Width = imageVide.Width / 4 + 2 * 6 + 1
    
            colCouverture.Image = imageVide
            colCouverture.ImageLayout = DataGridViewImageCellLayout.Stretch
            colCouverture.Description = "Vide par défaut"
    
            DataGridView1.Columns.Add(colCouverture)
            ' Insertion de la colonne 2 Nom de livre...
    
            DataGridView1.Columns.Add("Nom", "Nom de l'ouvrage")
    
            'Création des Rows
            DataGridView1.RowCount = 8
    
    
            ' Pour exemple chargement d'image et insertion dans les rangs
            Dim imgCouverture As Bitmap
            imgCouverture = Bitmap.FromFile(Application.StartupPath & "\couvertureExemple.jpg")
            ' Remplissage de la première colonne avec l'image de couverture et la deuxième avec un nom pour tous les Rows
            For intRow As Integer = 0 To 7
                DataGridView1.Rows(intRow).Cells(0).Value = imgCouverture
                DataGridView1.Rows(intRow).Cells(1).Value = "Livre " & intRow.ToString
            Next
    
            Me.ResumeLayout()
    
        End Sub


    dimanche 12 mars 2017 11:50
  • bonjour désolé d'avoir tardé a répondre....

    alors dans l'ordre :

    est-ce que un "\" est nécessaire avant  & DataGridView1.Rows(0).Cells(1).Value? : Oui c 'est necessaire sinon ca plante.....

    Ensuite pour ton code. Impeccable. Je l'ai adapté à mes besoins.

    Merci

    mardi 14 mars 2017 07:20
  • Ok, ma question était de savoir si un \ ne manquait pas dans votre ligne de code

    Dim Couverture = "c:\users\" & Environment.UserName & DataGridView1.Rows(0).Cells(1).Value

    par exemple entre UserName et votre DGV texte...

    mardi 14 mars 2017 10:01