【问题标题】:VB.Net DataColumn requires valid data typeVB.Net DataColumn 需要有效的数据类型
【发布时间】:2013-10-12 12:25:46
【问题描述】:
我有一个简单的数据表,我需要一列来包含图像的内容,以便我可以将其绑定到图片框以用于数据转发器。我的以下代码返回 System.Drawing.Bitmap 不是有效数据类型的错误,但我找不到。
Dim ListData As DataTable = New DataTable()
Dim FirstImageColumn As DataColumn = New DataColumn()
FirstImageColumn.DataType = System.Type.GetType("System.Drawing.Bitmap")
FirstImageColumn.ColumnName = "FirstImage"
ListData.Columns.Add(FirstImageColumn)
【问题讨论】:
标签:
vb.net
image
types
bitmap
【解决方案1】:
我知道这是一个旧帖子。这个答案对我有用。
Dim fileImg As Image = fileIcon.ToBitmap
column = New DataColumn("Image", GetType(Bitmap))
DocumentsDT.Columns.Add(column)
dr("Image") = fileImg
【解决方案2】:
您不能将 DataColumn 的属性 DataType 设置为对象无法识别的类型。
在 property DataType 的 MSDN 中,您可以阅读
DataType 属性支持以下基本 .NET Framework 数据类型:
Boolean、Byte、Char、DateTime、Decimal、Double、Guid、Int16、
Int32、Int64、SByte、Single、String、TimeSpan、UInt16、UInt32、UInt64、
字节[]
要将图像存储在 DataTable 中,您需要将其 DataType 属性定义为 byte[],然后您可以轻松找到将图像存储在该类型列中的代码
例如(未测试)
Dim ListData As DataTable = New DataTable()
Dim FirstImageColumn As DataColumn = New DataColumn()
FirstImageColumn.DataType = System.Type.GetType("System.Byte[]")
FirstImageColumn.ColumnName = "FirstImage"
ListData.Columns.Add(FirstImageColumn)
Dim img = Image.FromFile("....path to image file...")
Dim row = ListData.NewRow()
Dim ms = new MemoryStream()
img.Save(ms, System.Drawing.Imaging.ImageFormat.Gif)
row["FirstImage"] = ms.ToArray()
ListData.Rows.Add(row)