如果数据源中只包含图片的链接,如何在DevExpress GridControl的一列中显示外部图片?

要实现该功能,可通过非绑定列的方式来实现。具体实现方法如下:

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];

                  }

           }

转自:http://www.devexpresscn.com/DevExpress-Resources/Demo-13.html

DevExpress GridControl 显示外部图片的更多相关文章

  1. DevExpress GridControl 显示行号、设置行号宽

    显示行号类 /// <summary> /// GridView 显示行号 设置行号列的宽度 /// </summary> /// <param name="g ...

  2. [转帖]在RDLC中使用外部图片

    原文链接:http://blog.csdn.net/rock870210/article/details/4559962 在RDLC中使用外部图片 2009-09-16 19:08 3416人阅读 评 ...

  3. VS2003 下GridControl的列显示成图片+文字的形式实现

    public RC_CustomerSolicitListUC() { // 该调用是 Windows.Forms 窗体设计器所必需的. InitializeComponent(); // TODO: ...

  4. DevExpress GridControl使用方法

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 (1).gridView.AddN ...

  5. DevExpress GridControl 使用方法技巧 总结 收录整理

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...

  6. DevExpress GridControl使用(转)

    DevExpress GridControl使用 (一)原汁原味的表格展示 Dev控件中的表格控件GridControl控件非常强大.不过,一些细枝末节的地方有时候用起来不好找挺讨厌的.使用过程中,多 ...

  7. C# DevExpress GridControl使用方法

    一.如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 二.如何新增一条记录 ().gridView.AddNe ...

  8. [转载]DevExpress GridControl 使用方法技巧 总结 收录整理

    最近开始用DevExpress组件,发现很好的经验总结博客,在这里转载分享 原作者:https://www.cnblogs.com/wordgao/p/4517011.html 一.如何解决单击记录整 ...

  9. Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/1873 ...

随机推荐

  1. vue.js的一些小语法v-for,v-text,v-html,v-on:click

    1.Vue的目录结构: ======================================================================================== ...

  2. LeetCode——Longest Word in Dictionary through Deleting

    1. Question Given a string and a string dictionary, find the longest string in the dictionary that c ...

  3. LeetCode——Nth Digit

    Question Find the nth digit of the infinite integer sequence 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... ...

  4. [Pytorch]PyTorch Dataloader自定义数据读取

    整理一下看到的自定义数据读取的方法,较好的有一下三篇文章, 其实自定义的方法就是把现有数据集的train和test分别用 含有图像路径与label的list返回就好了,所以需要根据数据集随机应变. 所 ...

  5. 【eclipse】启动不了报错java was started but returned exit code=13

    原因是jdk与eclipse的版本不对,一个是32位的一个是64位的.

  6. codeforces 578c - weekness and poorness - 三分

    2017-08-27 17:24:07 writer:pprp 题意简述: • Codeforces 578C Weakness and poorness• 给定一个序列A• 一个区间的poornes ...

  7. Eclipse解决乱码问题

    使用Eclipse的时候发现有些格式的文件会乱码单个文件设置了没问题,但是在项目上设置却不起作用. 解决方法如下: Windows -> Preferences -> General -& ...

  8. Mac 升级node与npm

    第一步,先查看本机node.js版本: node -v 第二步,清除node.js的cache: sudo npm cache clean -f 第三步,安装 n 工具,这个工具是专门用来管理node ...

  9. 使用Python操作memcache

    Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache, 优点 完全实现了memcached text协议 对于send/recv操作可以配置timeou ...

  10. ZeroMq实现跨线程通信

    ZeroMq实现跨线程通信 之前在技术崇拜的技术经理指导下阅读了ZeroMq的基础代码,现在就将阅读的心得与成果记录一下,并重新模仿实现了一下经理的异步队列. 1.对外接口 //主要接口(1)void ...