+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 4 su 4

Discussione: caricare img in datagridview da database, ma è sempre la stessa

  1. #1
    SanzWeb non è in linea Novello
    Post
    23

    caricare img in datagridview da database, ma è sempre la stessa

    Ciao a tutti,

    in una datagridview ho necessità di caricare una immagine, per ogni articolo visualizzato, da un percorso memorizzato in campo database .

    Ho provato a scrivere il codice, ma l'immagine caricata è sempre la stessa.
    Non so se sbaglio il ciclo for o l'add alla griglia o tutte e due.

    Ho controllato inoltre esistenza del file (o almeno credo sia giusto così perché può succedere che ci siano articoli a cui non è stata ancora assegnata immagine e genererebbe una eccezione.

    di seguito il codice che uso e un grazie anticipato a chi mi illumina :-)

    codice:
    Private Sub loadarticoli()
            Dim adapter As New MySqlDataAdapter
            Dim dt As New DataTable
            Dim cmdsearch As New MySqlCommand
            Dim myquery As String
            Dim i As Integer
            myquery = "Select * from articoli"
            Using myconn As New MySqlConnection(stringaConn)
                myconn.Open()
                cmdsearch = New MySqlCommand(myquery, myconn)
                adapter.SelectCommand = cmdsearch
                dt.Clear()
                adapter.Fill(dt)
            End Using
            dglistart.RowTemplate.Height = 100
            dglistart.DataSource = dt
            Dim imgcol As New DataGridViewImageColumn
            imgcol.HeaderText = "Foto Articoli"
            dglistart.Columns.Add(imgcol)
            MessageBox.Show(dt.Rows.Count)
            For i = 0 To (dt.Rows.Count - 1)
                If Not IsDBNull(dt.Rows(i).Item(5)) And file.Exists(dt.Rows(i).Item(5).ToString) Then
                    Dim inImg As Image = GetImageFromFile(dt.Rows(i).Item(5).ToString)
                    imgcol.Image = inImg
                    imgcol.ImageLayout = DataGridViewImageCellLayout.Stretch
                End If
            Next
            With dglistart
                .Columns(0).Width = 50
                .Columns("idArticolo").HeaderText = "idArt"
                .Columns(1).Width = 50
                .Columns("codbar").HeaderText = "Codice"
                .Columns(4).Width = 180
                .Columns(5).Visible = False
                .Columns(6).Width = 40
                .Columns(7).Width = 40
                .Columns(8).Width = 150
            End With
        End Sub
    
     
     Public Shared Function GetImageFromFile(imageFilePath As String) As Image
            Dim img As Image
            Using fs As IO.FileStream = New IO.FileStream(imageFilePath, IO.FileMode.Open, IO.FileAccess.Read)
                img = Image.FromStream(fs)
                fs.Close()
            End Using
            Return img
        End Function
    Ultima modifica di AntonioG; 19-04-2019 14:56  Motivo: Usa i tag CODE per il codice sul forum

  2. #2
    patel45 non è in linea Scolaretto Ultimo blog: recupero dati da pagina html
    Post
    272
    Blogs
    1
    prova così:

    codice:
           For i = 0 To (dt.Rows.Count - 1)
                If Not IsDBNull(dt.Rows(i).Item(5)) And file.Exists(dt.Rows(i).Item(5).ToString) Then
                    Dim inImg As Image = GetImageFromFile(dt.Rows(i).Item(5).ToString)
                    dglistart(8, i).Value = inImg ' se la colonna immagini è la 8
                End If
            Next

  3. #3
    SanzWeb non è in linea Novello
    Post
    23
    grazie Patel45....
    a volte ci si perde veramente in un bicchier d'acqua....:-)

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Luogo
    Roma
    Post
    16,177
    Blogs
    5
    Attenzione ai tag CODE per il codice ... questa volta li ho aggiunti io ...

    E soprattutto, la prossima volta che farai CROSSPOSTING, il thread sarà chiuso ... avevi già postato da poco lo stesso quesito su altro forum.
    Avvisi generali e importanti, a pena CHIUSURA thread e/o BAN
    Il crossposting è vietato.
    Le richieste di "pappa pronta" sono vietate.
    Utilizzate i tag CODE per il codice.
    Leggere il Regolamento per chiarimenti PRIMA di creare nuovi thread.
    Utilizzare sempre i PM per comunicare con i moderatori.
    Non mi contattate in PM per problemi di software, usate il forum

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi