DevExpress GridControl 显示外部图片

时间:2024-07-24 22:36:14

如果数据源中只包含图片的链接,如何在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