天天看点

在DevExpress GridControl的一列中显示图片

        最近做项目的时候用到了将gridcontrol中一列设置为pictureedit类型,然后通过这一列来显示图片。经过尝试发现有以下两种方式可行。

方法一、知道图片的路径与名称

        比如:在数据库中存储了图片的路径(包括:本地路径、服务器路径),那么在可以通过非绑定列的方式来实现。

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

        fieldname设为 photo(该字段名必须是唯一的)

在DevExpress GridControl的一列中显示图片

        unboundtype设为 unboundcolumntype.object

        columnedit设为repositoryitempictureedit类的实例(该操作pictureedit 为该列的内置编辑器)

在DevExpress GridControl的一列中显示图片

        2.、添加gridview的customunboundcolumndata事件,用于为非绑定列填充数据。

在DevExpress GridControl的一列中显示图片

        既然已经设置完成了,那么具体的代码怎么编写呢?具体代码如下:

如果图片在单元格中显示有问题的话,可以调整  

在DevExpress GridControl的一列中显示图片

方法二、知道图片的路径与名称

        除了方法一之外,我们还可以使用流的方式的来加载图片,即根据图片路径将图片转化为流,然后直接绑定到repositoryitempictureedit列上即可。此时不需要修改列的绑定类型,只需要该列的fieldname与数据源中的byte[]流的所在列的名称一致即可,

        如果这么绑定无效的话,可以在gridcontrol的数据源(此处假设为dataset)中新增一列

        然后,根据路径加载图片到photo列中,

     其中,可能会用到的函数如下:

小注:

使用以上方法,快速滑动滑动条的时候,会出现卡死的现象,因为上述代码是每次实时读取图片资源的,应该加入一个图片路径、图片 字典,以减少图片的重复读取。