c# - DataTable的DataColumn中保存图片的DataType

标签 c# datagridview datatable datagridviewcolumn datacolumn

我有一个看似简单的问题,我动态创建了一个 DataTable,然后向其中添加行就好了。但是我有一列将有一个标志,它是一个图像。我已经将两个标志(.png 图像)导入到项目资源中。但是我无法将列的 DataType 设置为 System.Type.Bitmap,因为 DataColumn 不支持,如 HERE 所示。我看到一个解决方案说我将 DataType 设置如下

dataColumn = new DataColumn("Flag");
dataColumn.DataType = System.Type.GetType("System.Byte[]"); //Replacing System.Byte[] with System.Type.Bitmap throws Type Exception
dataTable.Columns.Add(dataColumn);

然而,这会抛出一个异常,说明编译器需要 Byte[] 但得到了 Bitmap。

这是我向 DataTable 添加行的方法

row["Part Number"] = part;
row["Module Name"] = populator.LookUpAValue(moduleSql);
row["Flag"] = Properties.Resources.Yellow_Flag;
row["Location"] = populator.LookUpAValue(nameSql);
dataTable.Rows.Add(row);

这是我的问题,当我显示到 DataGridView 时,我应该将图像列保存为哪种数据类型,我会看到显示的图像。如果不在 DataGridView 上设置 DataType 而不是显示图像,我会得到文本 System.Drawing.Bitmap

最佳答案

这是对我有用的代码。

DataTable dt = new DataTable();
DataColumn dc = new DataColumn("Column1");
dc.DataType = System.Type.GetType("System.Byte[]");
dt.Columns.Add(dc);
DataRow row = dt.NewRow();
var imageConverter = new ImageConverter();
row["Column1"] = imageConverter.ConvertTo(Properties.Resources._1, System.Type.GetType("System.Byte[]")); 
dt.Rows.Add(row);
this.dataGridView1.DataSource = dt;

关于c# - DataTable的DataColumn中保存图片的DataType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28395252/

相关文章:

具有 "where constraint"定义的 C# 泛型 "any generic type"?

c# - 如何对 asp :Table? 进行排序

c# - 如何在单击按钮时立即将 dataGridView 数据导出到 Excel?

c# - 同一项目,不同机器,一台机器存在交叉线程问题

c# - LINQ查询数据表,加入多个选择

python - 使用 pydatatable 以 R 数据表的 .SDcols 样式更新或添加多列

c# - C# 中的 Case 语句 block 级声明空间

c# - Web API 返回 XML 内容

c# - 在 C# 中验证数据网格

jquery - 使用数据表和 Bootstrap 模式