Member 14150747 Ответов: 1

Я хочу отобразить данные и изображение из msaccess в datagridview в vb.net-да.


Моя база данных содержит 3 поля
i.e FieldName    datatype
    Empid         ShortText
    Empname       ShortTExt
    img           OLEObject

а код внутри vb.net есть

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load


        Dim dvgTxtcolumn As New DataGridViewTextBoxColumn
        dvgTxtcolumn.HeaderText = "Roll No"

        Dim dvgTxtcolumn1 As New DataGridViewTextBoxColumn
        dvgTxtcolumn1.HeaderText = "Stu Name"

        Dim dvgImagecolumn As New DataGridViewImageColumn
        dvgImagecolumn.HeaderText = "Image"
        dvgImagecolumn.ImageLayout = DataGridViewImageCellLayout.Stretch


        DataGridView1.Columns.Add(dvgTxtcolumn)
        DataGridView1.Columns.Add(dvgTxtcolumn1)
        DataGridView1.Columns.Add(dvgImagecolumn)

        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnMode.Fill
        DataGridView1.RowTemplate.Height = 120
        DataGridView1.AllowUserToAddRows = False
        insert_pic()

    End Sub



Private Sub insert_pic()
        Try
conn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\CMS_SOFTWARE\CMS\CCMS\project.mdb")
            conn.Open()
            query = "Select * FROM test"
            Dim adapter2 As New OleDbDataAdapter(query, conn)
            Dim DT2 As New DataTable
            adapter2.Fill(DT2)
For I = 0 To DT2.Rows.Count - 1
Dim ms As New MemoryStream
PictureBox1.Image = DT2.Rows(I)(2)
PictureBox1.Image.Save(MS, PictureBox1.Image.RawFormat)
Dim dtimage As Byte()
 dtimage = ms.ToArray()
DataGridView1.Rows.Add(DT2.Rows(I)(0), DT2.Rows(I)(1), dtimage)

            Next

        Catch ex As Exception
            MsgBox(Err.Description, MsgBoxStyle.Critical)
        End Try
    End Sub


Что я уже пробовал:

------------------------------------------
But The program was giving the error is  "Unable to cast object of type 'System.Byte[]
to type 'System.Drawing.Image'


Может ли кто-нибудь помочь мне, как решить эту проблему и как дать код для отображения изображения в представлении datagrid из ms access.Я пытаюсь это сделать с тех пор, как от последних 3 до 4 дней, но не могу этого сделать.кто-нибудь, пожалуйста, помогите мне



Пожалуйста, помогите мне, как решить эту проблему

1 Ответов

Рейтинг:
0

Richard Deeming

Попробуй:

Dim converter As New ImageConverter()
For I = 0 To DT2.Rows.Count - 1
    Dim dtimage As Image = CType(converter.ConvertFrom(DT2.Rows(I)(2)), Image)
    DataGridView1.Rows.Add(DT2.Rows(I)(0), DT2.Rows(I)(1), dtimage)
Next
NB: Убедитесь, что у вас есть Imports System.Drawing в верхней части вашего файла кода.

Вы также захотите изменить свой запрос, чтобы явно указать нужные столбцы, а не использовать их SELECT * FROM ....