C# winfrom的datagridview 如何直接绑定datatable里的图片?

raymondlst 2011-06-28 11:54:40
数据库中存有产品的照片物理路径,想在datagridview中绑定datatable时,直接显示产品图片。


我做测试的代码:

   

private void BindData()
{
this.dataGridView1.DataSource = CreateData();
}

private DataTable CreateData()
{
//创建 DataTable
DataTable dt = new DataTable();
dt.Columns.Add("产品名", System.Type.GetType("System.String"));
//dt.Columns.Add("图片", System.Type.GetType("System.Drawing.Bitmap"));
dt.Columns.Add("图片", (System.Data.SqlDbType.Image).GetType());

DataRow dr = dt.NewRow();
dr["产品名"] = "001";
//dr["图片"] = @"C:\1.jpg";
dr["图片"] = FileToImage(@"C:\1.jpg");
dt.Rows.Add(dr);

return dt;
}

private Image FileToImage(string filePath)
{
System.Drawing.Image img = System.Drawing.Image.FromFile(filePath);
return img;
}


目前运行到 dr["图片"] = FileToImage(@"C:\1.jpg"); 这就出错了。

我的问题是:

1、DataTable 图片的存放类型是什么,添加Columns时,具体应该怎么写;

2、如果 DataTable 里直接存放图片数据可行的话,在DataGridView直接绑定DataTable,图片显示是否可行;

3、如果我的思路有问题,或者各位有更好的办法,请告诉我。


这问题纠结我很久了,谢谢!
...全文
716 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
raymondlst 2011-06-29
  • 打赏
  • 举报
回复
直接存图片问题就很简单了。但系统的图片很多,有专门的图片服务器,所有图片都是文件存在的。

前提不允许。
raymondlst 2011-06-29
  • 打赏
  • 举报
回复
已经解决图片显示的问题,用Byte[]类型就可以显示。不过效果很不好,正在找办法解决。

dt.Columns.Add("图片", (System.Type.GetType("System.Byte[]"))); 


接下来还要解决这个显示区域高宽的问题。通过AsposeExcel导出图片时候行列的高宽也在折磨我。有朋友知道具体的解决办法吗。



EdsionWang 2011-06-29
  • 打赏
  • 举报
回复
直接存照片啊
tyg111 2011-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiongxyt2 的回复:]

直接将图片存入数据库,查询得到DataSet后绑定
[/Quote]
+1
xiongxyt2 2011-06-29
  • 打赏
  • 举报
回复
直接将图片存入数据库,查询得到DataSet后绑定
足球中国 2011-06-29
  • 打赏
  • 举报
回复
看错误类型是什么,然后根据错误类型找到答案。
namhyuk 2011-06-29
  • 打赏
  • 举报
回复
是啊,我就记得好像可以直接显示数据库中image(或varbinary)字段中的图片的。
isjoe 2011-06-29
  • 打赏
  • 举报
回复
如果你的数据库里面存放的不是路径而是图片的话,是image类型,对应DataTable是byte[]。

有两个方法:

第一,数据库直接存放图片,读取到DataTable里面就是byte数组,datagridview对应的列选择成Image类型即可显示。

第二、datagridview有个绘制单元格事件,自己绘制。还有个方法是继承datagridview的列模板类,然后自定义列模板,并将这个模板类赋值给datagridview的图像列。

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧