DataGridView DataSource //整数到图标

时间:2016-06-22 11:45:29

标签: vb.net datagridview bindingsource

我有一个基于列表的应用程序运行速度很慢,因为我的DataGridView中的每一行都是手动构建为DataGridViewRow。为了解决性能问题,我决定使用DataSource(DataTable)。

我的问题:

我从我的数据库中收到的一个列中填充了图像ID。应用程序知道哪个图像属于哪个id。手动创建网格时,将int转换为位图并使用位图作为图像列的值没有问题。现在使用Datatable而不能让它工作。为了测试我编写了以下类:

Public Class test
Dim img As Bitmap

Public Sub New(image As Bitmap)
    InitializeComponent()
    Me.img = image
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim dt As New DataTable
    dt.Columns.Add("StrCol")
    dt.Columns.Add("ImgCol")
    Dim row As DataRow = dt.NewRow
    row.Item(0) = "Ohne Bild"
    row.Item(1) = 0
    Dim row2 As DataRow = dt.NewRow
    row2.Item(0) = "Mit Bild"
    row2.Item(1) = 1
    dt.Rows.Add(row)
    dt.Rows.Add(row2)
    DataGridView1.DataSource = dt
End Sub

Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    If e.ColumnIndex = 1 Then
        If e.Value = 0 Then
            e.Value = Nothing
        Else
            e.Value = img
        End If
    End If
End Sub
End Class

提示:

  • “Ohne Bild”翻译成“没有图像”
  • “Mit Bild”转换为“With image”

Button1_Click()后的输出 Output after Button1_Click()

修改

由于误会,我会试着澄清我的问题;

基于列表我实际上并不意味着列表对象。我在那里很糟糕。基于列表我的意思是一个应用程序,显示他所做的用户数据库托管。我的应用程序的基础很简单:允许用户在datagridview中添加行,编辑和删除行。此信息在数据库中保存和编辑。行中的一些信息(准确地说是2列)显示为图标,而应用程序只是在数据库中保存了图标的id。因此,应用程序知道哪个ID属于哪个图标。

问题中的样本dt只是为了有所帮助。在应用程序中,它将从数据库接收到数据表的数据。

1 个答案:

答案 0 :(得分:0)

我终于自己解决了。

  1. 我从我的数据库中获取了一个数据表。
  2. 然后我使用DataType Bitmap
  3. 为其添加一个列
  4. 然后我循环遍历DataTable的每一行并将Image_ID列转换为图像本身并将图像放入新列
  5. 然后我删除了Image_ID列
  6. 然后我使用新的DataTable作为DataSource
  7. 我在我的主应用程序中创建了这个代码,这个代码要复杂得多,所以我不能在这里显示代码。对不起,谢谢你的帮助。

    在将表格用作源代码之前,完成您需要做的每项更改非常重要,因为只要gridView必须更改显示的内容,就需要花费更多时间。