Gangani Roshan
Gangani Roshan

Reputation: 583

Display image in Datagridview

I am trying to display image in datagridview using ms-access and vb.net 2012. my database in store image path does not image directly so when try to retrieve image in datagridview it shows the image path, not the image.

so how can I fix it?

   Private Sub design_list_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: This line of code loads data into the 'Design_managementDataSet.design_details' table. You can move, or remove it, as needed.
            'Me.Design_detailsTableAdapter.Fill(Me.Design_managementDataSet.design_details)

            cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\Design Management\Database\design_management.accdb"

            If Not cnn.State = ConnectionState.Open Then
                cnn.Open()
            End If

            designDatagridShow()
        End Sub

 Private Sub designDatagridShow()
        Dim ds As New DataSet
        Dim dt As New DataTable

        ds.Tables.Add(dt)

        Dim da As New OleDbDataAdapter

        da = New OleDbDataAdapter("select * from design_details", cnn)

        da.Fill(dt)
        design_datagridview.AutoGenerateColumns = False

        Dim ColImage As New DataGridViewImageColumn
        Dim Img As New DataGridViewImageCell

        design_datagridview.ColumnCount = 3

        design_datagridview.Columns(0).Name = "design_number"
        design_datagridview.Columns(0).HeaderText = "Design Number"
        design_datagridview.Columns(0).DataPropertyName = "design_number"

        design_datagridview.Columns(1).Name = "design_collection"
        design_datagridview.Columns(1).HeaderText = "Design Collection"
        design_datagridview.Columns(1).DataPropertyName = "design_collection"

        design_datagridview.Columns(2).Name = "price"
        design_datagridview.Columns(2).HeaderText = "Design Price"
        design_datagridview.Columns(2).DataPropertyName = "price"

        design_datagridview.Columns(3).Name = "design_image"
        design_datagridview.Columns(3).HeaderText = "Design Image"
        design_datagridview.Columns(3).DataPropertyName = "design_image"

        design_datagridview.DataSource = dt
        Dim value As String
        value = design_datagridview.Columns(3).HeaderText = "design_image"
        Label1.Text = value

        cnn.Close()

    End Sub

Update 1: enter image description here

Thanks.

Upvotes: 0

Views: 4484

Answers (1)

F0r3v3r-A-N00b
F0r3v3r-A-N00b

Reputation: 3003

Add another column that is of System.Drawing.Image datatype, then set the image based on your image column's path using System.Drawing.Image.FromFile(...) like the following:

Dim imageColumn As New DataColumn
imageColumn.ColumnName = "ActualImage"
imageColumn.DataType = GetType(System.Drawing.Image)
dt.Columns.Add(ImageColumn)

For Each row As DataRow in dt.Rows
   row("ActualImage") = System.Drawing.Image.FromFile(row("design_image"))
Next

dt.AcceptChanges()


Dim dgvImageColumn As New DataGridViewImageColumn
dgvImageColumn.DataPropertyName = "ActualImage"
dgvImageColumn.Name = "ActualImage"
dgvImageColumn.ImageLayout = DataGridViewImageCellLayout.Zoom
design_datagridview.Columns.Add(dgvImageColumn)

design_datagridview.DataSource = dt

Upvotes: 1

Related Questions