最近做项目的时候用到了将gridcontrol中一列设置为pictureedit类型,然后通过这一列来显示图片。经过尝试发现有以下两种方式可行。
方法一、知道图片的路径与名称
比如:在数据库中存储了图片的路径(包括:本地路径、服务器路径),那么在可以通过非绑定列的方式来实现。
1、创建了一个非绑定列并设置其相应的属性,属性设置如下:
fieldname设为 photo(该字段名必须是唯一的)
unboundtype设为 unboundcolumntype.object
columnedit设为repositoryitempictureedit类的实例(该操作pictureedit 为该列的内置编辑器)
2.、添加gridview的customunboundcolumndata事件,用于为非绑定列填充数据。
既然已经设置完成了,那么具体的代码怎么编写呢?具体代码如下:
如果图片在单元格中显示有问题的话,可以调整
方法二、知道图片的路径与名称
除了方法一之外,我们还可以使用流的方式的来加载图片,即根据图片路径将图片转化为流,然后直接绑定到repositoryitempictureedit列上即可。此时不需要修改列的绑定类型,只需要该列的fieldname与数据源中的byte[]流的所在列的名称一致即可,
如果这么绑定无效的话,可以在gridcontrol的数据源(此处假设为dataset)中新增一列
然后,根据路径加载图片到photo列中,
其中,可能会用到的函数如下:
小注:
使用以上方法,快速滑动滑动条的时候,会出现卡死的现象,因为上述代码是每次实时读取图片资源的,应该加入一个图片路径、图片 字典,以减少图片的重复读取。