GridControl 列中显示图片

1.

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; 完成。

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

 

2.

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.

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

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

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

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

  •  处理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];
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值