GridControl 列中显示图片

来源:互联网 发布:javascript教程 正则 编辑:程序博客网 时间:2024/06/05 01:51

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


原创粉丝点击