开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 7273|回复: 7

请教各位大侠,这种效果如何实现?

[复制链接]

0

精华

3

贡献

247

赞扬

帖子
47
软币
990
在线时间
94 小时
注册时间
2013-9-22
发表于 2013-10-29 16:38:08 | 显示全部楼层 |阅读模式
devexpress版本 13.1.5,vs2010 C#开发

这是Demo里的一个GridView效果,貌似内嵌了repositoryItemImageEdit控件。
我的数据库中存放的是图片的外部路径,比如"c:\123.jpg"。请问如何在显示时点击单元格根据存储的路径加载图片并显示如下的效果?
官方Demo代码没有注释,实在是理解不能。。。
123.jpg
回复

使用道具 举报

0

精华

2

贡献

254

赞扬

帖子
166
软币
4472
在线时间
698 小时
注册时间
2013-6-26
发表于 2013-10-31 17:46:47 | 显示全部楼层
【DevExpress】GridControl - RepositoryItemImageEdit用法
http://www.dxper.net/thread-1781-1-1.html
(出处: DXPER开发者论坛)

评分

参与人数 1赞扬 +1 收起 理由
DevilHero + 1 Thanks

查看全部评分

回复

使用道具 举报

0

精华

3

贡献

247

赞扬

帖子
47
软币
990
在线时间
94 小时
注册时间
2013-9-22
 楼主| 发表于 2013-10-31 23:19:00 | 显示全部楼层
heimuheimulm 发表于 2013-10-31 17:46
【DevExpress】GridControl - RepositoryItemImageEdit用法
http://www.dxper.net/thread-1781-1-1.html
( ...

谢谢,你的方法我看了,貌似是把图片预先载入到数据源中。不过这样在数据比较多的情况下会不会增大系统资源的占用呢?
我想实现的功能是当点击单元格时ImageEdit控件才会根据单元格存储的路径动态加载图片。研究了半天还是没找到方法。。。
回复

使用道具 举报

0

精华

2

贡献

254

赞扬

帖子
166
软币
4472
在线时间
698 小时
注册时间
2013-6-26
发表于 2013-11-1 02:19:30 | 显示全部楼层
如果数据量比较大,可以采用GridView分页的方法限制一次显示的条数,达到提高用户体验和性能的方法。

评分

参与人数 2贡献 +2 赞扬 +3 收起 理由
DevilHero + 1 Thanks
羽叶 + 2 + 2 赞一个

查看全部评分

回复

使用道具 举报

0

精华

74

贡献

722

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
183
软币
3861
在线时间
327 小时
注册时间
2013-6-7
发表于 2013-11-1 13:30:17 | 显示全部楼层
我觉得可以利用 RepositoryItemPopupContainerEdit 这种类型.

比如:
1. 定一个 PictureBox(或是类似的图像显示编辑控件)
  PictureBox _picBox = new PictureBox();
  _picBox.Dock = DockStyle.Fill;
  _picBox.SizeMode = PictureBoxSizeMode.Zoom;

2. 在Form_Load事件中将 _picBox 关联到列的 repositoryItemPopupContainerEdit1
   repositoryItemPopupContainerEdit1.PopupControl = new PopupContainerControl();
   repositoryItemPopupContainerEdit1.PopupControl.Controls.Add(_picBox);

3. 在 repositoryItemPopupContainerEdit1的 QueryPopUp 事件中将对应的图片内容关联到 _picBox
   假定这个栏位绑定的就是图片路径, 则
   _picBox.Image = new Bitmap(gridView1.GetFocusedValue().ToString());

评分

参与人数 1赞扬 +1 收起 理由
DevilHero + 1 Thanks

查看全部评分

回复

使用道具 举报

0

精华

3

贡献

247

赞扬

帖子
47
软币
990
在线时间
94 小时
注册时间
2013-9-22
 楼主| 发表于 2013-11-2 01:23:16 | 显示全部楼层
本帖最后由 DevilHero 于 2013-11-2 01:28 编辑

多些指点。这两天又研究了一下,目前通过ImageEdit控件的QueryPopUp事件可以实现动态加载图片,但是关闭时却出现了问题。。提示出现“对象必须实现IConvertible”, 原因貌似是因为控件加载了图片之后,关闭时会修改原单元格中的内容。因为原单元格存储的是字符串,而修改后变成了图片数据,导致类型不符的问题...

  1. //点击单元格动态加载图片
  2.         private void rpic_QueryPopUp(object sender, System.ComponentModel.CancelEventArgs e)
  3.         {
  4.             DevExpress.XtraEditors.ImageEdit ie = sender as DevExpress.XtraEditors.ImageEdit;
  5.             //e.Cancel = ie.EditValue.ToString() == "";

  6.             if (ie.EditValue.ToString() != "")   //判断是否存储有图片
  7.             {
  8.                 String imgpath = Application.StartupPath + "\\img\" + ie.EditValue.ToString();

  9.                 ie.EditValue = Image.FromFile(imgpath);
  10.             }

  11.         }
复制代码
未绑定控件时单元格内容
QQ截图20131102012632.png



绑定控件后点击单元格显示:
QQ截图20131102011623.png


关闭ImageEdit时的问题:
QQ截图20131102012028.png



回复

使用道具 举报

0

精华

74

贡献

722

赞扬

正版授权组

Rank: 14Rank: 14Rank: 14Rank: 14

帖子
183
软币
3861
在线时间
327 小时
注册时间
2013-6-7
发表于 2013-11-2 14:37:36 | 显示全部楼层
本帖最后由 nyfor 于 2013-11-2 14:49 编辑

如果你要使用 ImageEdit , 那么请这样:

不要使用 QueryPopup 事件,改而使用 ParseEditValue 事件

private void repositoryItemImageEdit1_ParseEditValue(object sender, DevExpress.XtraEditors.Controls.ConvertEditValueEventArgs e)
{
    if (e.Value != null && e.Value is string && e.Value.ToString() != string.Empty)
    {
        String imgpath = Application.StartupPath + "\\img\\" + e.Value.ToString();
        e.Value = Image.FromFile(imgpath);
        e.Handled = true;
    }
}

评分

参与人数 2贡献 +3 赞扬 +2 收起 理由
羽叶 + 3 + 1 赞一个
DevilHero + 1 很给力

查看全部评分

回复

使用道具 举报

0

精华

3

贡献

247

赞扬

帖子
47
软币
990
在线时间
94 小时
注册时间
2013-9-22
 楼主| 发表于 2013-11-2 19:07:17 | 显示全部楼层
nyfor 发表于 2013-11-2 14:37
如果你要使用 ImageEdit , 那么请这样:

不要使用 QueryPopup 事件,改而使用 ParseEditValue 事件

高手就是高手,厉害!!
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-5-9 10:14

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表