如何在 DevExpress.XtraGrid.GridControl 显示图片列。 方法很多,我把它们逐一写在附言中,方便大家分情况合理使用。

第 1 条附言  ·  6 月前

GridControl一列的ColumnEdit属性中选择PictureEdit,一个RepositoryItemPictureEdit添加完成。列的FieldName设置为Image列名,如img。

GridControl绑定的数据,不管是DataTable、List或者其他源,添加一个列,列名为img。 以DataTable为例:

Image xx=Image.FromFile("xxx"),yy=Image.FromFile("yyy");
dt.Columns.Add("img");
foreach(DataRow dr in dt.Rows)
{
    if(dr["imgflag"].ToString()=="1")
        dr["img"]=xx;
    else dr["img"]=yy;
}

然后设置
gridcontrol1.DataSource=dt; 完成。

第 2 条附言  ·  6 月前

上一篇介绍的是直接使用Image类型,也可以使用byte[]。

如果数据库中直接存的二进制,没什么好说的,直接DataSource=dt绑定完成即可。

下面是一个image路径的例子。

private void showData(List list) {
 
    DataTable dt = new DataTable("OneEmployee");
 
    dt.Columns.Add("Caption",System.Type.GetType("System.String"));
 
    dt.Columns.Add("Department",System.Type.GetType("System.String"));
 
    dt.Columns.Add("PhotoName",System.Type.GetType("System.Byte[]"));
 
    for (int i = 0; i < list.Count; i++) {
 
        DataRow dr = dt.NewRow();
 
        dr["Caption"] = list[i].Name;
 
        dr["Department"] =list[i].Department;
 
        string imagePath = @"D:/C#/photos/" + list[i].PhotoPath;
 
        dr["PhotoName"] = getImageByte(imagePath);
 
        dt.Rows.Add(dr);
 
    }
 
    gridControl1.DataSource = dt;
 
}
 
 
//返回图片的字节流byte[]
 
private byte[] getImageByte(string imagePath) {
 
    FileStream files = new FileStream(imagePath,FileMode.Open);
 
    byte[] imgByte = new byte [files.Length ];
 
    files.Read(imgByte,0, imgByte.Length);
 
    files.Close();
 
    return imgByte;
 
}
第 3 条附言  ·  6 月前

还有一种方法,使用CustomUnboundColumnData事件

1. 创建了一个非绑定列并设置其相应的属性,属性设置如下:

FieldName设为Image (该字段名必须是唯一的) UnboundType设为 UnboundColumnType.Object

ColumnEdit设为RepositoryItemPictureEdit类的实例(该操作PictureEdit 为该列的内置编辑器)

2. 处理View的CustomUnboundColumnData事件,用于为非绑定列填充数据。

在该事件中需加载图片,将其存放在一个hashtable中,然后再将其提供给对应

的单元格。

关键代码:

//获取文件路径
string GetFileName(string color) {
    if(color == null ||color == string.Empty)
        return string.Empty;
    return color + ".jpg";
}
//处理CustomUnboundColumnData事件,为非绑定列填充数据
private void gridView1_CustomUnboundColumnData(object sender,
DevExpress.XtraGrid.Views.Base.CustomColumnDataEventArgs e)
{
    if(e.Column.FieldName == "Image" && e.IsGetData) {
    GridView view = sender as GridView;
    string colorName = (string)((DataRowView)e.Row)["Color"];
    string fileName = GetFileName(colorName).ToLower();
    if(!Images.ContainsKey(fileName))
    {
        Image img = null;
        try {
            string filePath = DevExpress.Utils.FilesHelper.FindingFileName(Application.StartupPath, ImageDir+ fileName, false);
            img = Image.FromFile(filePath);
        } catch { }
            Images.Add(fileName, img);
        }
        e.Value = Images[fileName];
    }
}

GridControl 列中显示图片 z的更多相关文章

  1. DevExpress GridControl 列中显示图片

    一.GridControl 的Columns中添加列 1.列名:FieldName命名为img 2.类型:ColumnEdit属性中 选择PictureEdit类型(RepositoryItemPic ...

  2. 在DevExpress GridControl的一列中显示图片

    作者:jiankunking 出处:http://blog.csdn.net/jiankunking 近期做项目的时候用到了将GridControl中一列设置为PictureEdit类型,然后通过这一 ...

  3. Devexpress GridView 列中显示图片

    首先将图片添加到ImageList中 添加GridView中Column void gridView1_CustomUnboundColumnData(object sender, DevExpres ...

  4. iOS开发小技巧--即时通讯项目:使用富文本在UILabel中显示图片和文字;使用富文本占位显示图片

    Label借助富文本显示图片 1.即时通讯项目中语音消息UI的实现,样式如图: 借助富文本在UILabel中显示图片和文字 // 1.创建一个可变的富文本 NSMutableAttributedStr ...

  5. 我的Android进阶之旅------&gt; Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包括图像的文本信息).并简要说明实现方法. 答案:Android SDK支持例如以下显示富文本信息的方式. 1.使用T ...

  6. 我的Android进阶之旅------> Android在TextView中显示图片方法

    面试题:请说出Android SDK支持哪些方式显示富文本信息(不同颜色.大小.并包含图像的文本信息),并简要说明实现方法. 答案:Android SDK支持如下显示富文本信息的方式. 1.使用Tex ...

  7. 在HTML中显示图片时希望如果图片不存在或者无法显示时,能够显示默认图片

    很多时候,在HTML中显示图片时希望如果图片不存在或者无法显示时,能够显示默认图片.可以通过以下方式: <img src="xxx.jpg" onError="th ...

  8. 在博客中显示图片_Mac版

    主要是防止自己忘掉 为了解决一开始自己想在写入的博客中添加本地图片,直接链接的话在自己的电脑倒是可以显示图片,但是在别人的电脑上就没办法加载图片了,问各路大神也没人愿意解答,百度也没有想要的答案,只好 ...

  9. MATLAB在三维坐标中显示图片 并 使得图片部分透明

    要画一个光路图,本来可以用proe,但是鼠标不好用,有些操作也忘了,用MATLAB画了个.下面是用到的图片. 但是三维坐标中显示彩色图片的目标没有搞定,做了个灰度图,然后用仿射程序将彩色图片贴到了二维 ...

随机推荐

  1. html-----009

    </head> <!-- 通过使用框架,你可以在同一个浏览器窗口中显示不止一个页面. <p> 垂直框架</p> 本例演示:如何使用三份不同的文档制作一个垂直框 ...

  2. ios 64位下编译webrtc的libvpx库出现错误Bad cputype for object file.Currently only tested for CPU_TYPE_x86_64

    diff --git a/libvpx.gyp b/libvpx.gypindex 4f8cb2b..4eb6866 100644--- a/libvpx.gyp+++ b/libvpx.gyp@@ ...

  3. 记录创建企业Wiki的几个开源项目

    很多著名的企业Wiki都是开源产品,如Foswiki(基于Perl),TWiki(基于Perl)等,另外有Mindtouch(基于PHP, C#),Confluence(基于Java)等.维基道的Wi ...

  4. varnish 4.0编译安装小记

    varnish 4.0 编译问题 centos-6.5 x86环境 装varnish遇到几个错误要先安装python-docutils然后提示error1,于是安装:libedit-devel然后提示 ...

  5. SQL Trigger(触发器)

    1.触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程. 2.触发器一般用在check约束更加复杂的约束上面. 3.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作. 4.upd ...

  6. 降低IIScup使用率,提高性能

    智能提醒webservice在高峰期间CPU使用率达到50%,内存消耗2G优化方法:启用IIS的Web Garden. 步奏如下: 在IIS7中,选择对应的应用程序池 然后右键高级设置. 把其中的最大 ...

  7. css reset浅谈

    我们都知道,web开发中浏览器兼容性是困扰很多开发者的一个问题.所谓兼容性问题,即不同浏览器对同一段代码有不同的解析效果.而我们的需求往往是无论用户使用何种浏览器查看我们的网站,都应该获得相同或相近的 ...

  8. php 相对路径中 及 绝对路径中 的一些问题

    写本篇文章,是为了以后学习中遇到问题好解决 php的相对路径是以当前工作目录为基准的,并不是以当前处理的文件目录为基准,这样导致我们在开发过程中总会遇到一些问题. 但是如果我们使用绝对路径,就会导致后 ...

  9. grub命令来引导linux

    由于对linux系统的好奇,想按在机器上玩玩.昨天忙活了一晚上,最终才把linux安装好.但高兴的有点太早了,我还以为进linux就像进 windows那么简单哪,没有想到却蹦出来一个引导命令(gru ...

  10. 使用reinterpret_cast的危险

    关键字: c++ cast // Cast.cpp : Defines the entry point for the console application. // #include "s ...