找回密码
 立即注册

QQ登录

只需一步,快速开始

karaiwasabi

中级会员

31

主题

54

帖子

733

积分

中级会员

积分
733
karaiwasabi
中级会员   /  发表于:2019-12-2 20:04  /   查看:4878  /  回复:5
1金币
通过FetchCellStyle设置了某列的背景色,在列拖拽的时候存在问题。通过列拖拽改变顺序后,当前显示部分的背景颜色看上去跟着移动过去了,但是其实鼠标向下滚动,之前没能表示的行出来之后,发现列颜色并没有跟着移动过去。只是之前显示部分没有刷新而已。如果拖拽之后调用一下refresh方法,立即能看到效果。
请问列移动是否可以让背景色跟着移动?还有这种显示问题是否有解决方案?貌似列移动不会触发FetchCellStyle事件。谢谢

最佳答案

查看完整内容

拖曳列是会引起刷新的,你说的没有引起,有可能是对应的列的FetchStyle没有设置为True,可以将所有列设置为true试试 按照我这样写的话,不需要再去手动刷新

5 个回复

正序浏览
karaiwasabi
中级会员   /  发表于:2019-12-4 15:14:50
5#
Richard.Ma 发表于 2019-12-4 12:00
验证了一下,这个应该不是一个产品问题

FetchCellStyle事件中,获取的列索引是DisplayColumnCollection ...

这部分代码写在fetchcellstyle事件里面吗?但是拖拽列不会触发这个事件。

列拖拽以后,显示没有被刷新,导致列的表示部分和未表示部分两种颜色,这个是需要自己代码手动去刷新是吧?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-4 12:00:05
4#
验证了一下,这个应该不是一个产品问题

FetchCellStyle事件中,获取的列索引是DisplayColumnCollection中当前单元格的,拖动后,本身就发生了变化,
但是根据e.Col设置的样式,当然还是之前列的
所以你说的refresh后,就是正确的结果

我理解你的功能需求,可以这样写,这样就是始终设置的UserCode这一列的背景色
  1.             if (e.Column.DataColumn.Caption=="UserCode")
  2.             {
  3.                 e.CellStyle.BackColor = Color.LightYellow;
  4.                 e.CellStyle.BackColor2 = Color.LightGoldenrodYellow;
  5.                 e.CellStyle.GradientMode = C1.Win.C1TrueDBGrid.GradientModeEnum.Horizontal;
  6.             }
复制代码

回复 使用道具 举报
karaiwasabi
中级会员   /  发表于:2019-12-4 09:06:58
3#
Richard.Ma 发表于 2019-12-3 11:01
需要验证一下问题,然后给您结果

谢谢。另外我的版本是2018 v1,不知道后续的版本是否有解决。
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-3 11:01:20
2#
需要验证一下问题,然后给您结果
回复 使用道具 举报
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-12-2 20:04:59
来自 6#
本帖最后由 Richard.Ma 于 2019-12-4 15:43 编辑

拖曳列是会引起刷新的,你说的没有引起,有可能是对应的列的FetchStyle没有设置为True,可以将所有列设置为true试试

按照我这样写的话,不需要再去手动刷新


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部