找回密码
 立即注册

QQ登录

只需一步,快速开始

KNight
中级会员   /  发表于:2015-9-17 09:02:00
31#
回复 30楼q406157290的帖子

那你干脆都在CellFactory中处理算了,包括新行的排它错误红框提示,也在CellFactory中完成呗,当在CellFactory中判断为新行时,自己手动获取该行的排它错误信息,如果该行有排它错误信息,则重绘该单元格border样式,这样就不用在RowEditEnding事件中手动提交然后交由C1FlexGrid默认的CellFactory绘制排它错误提示框了;
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-9-17 14:06:00
32#
回复 31楼KNight的帖子

errorMessage是不是就不会显示了, 在循环变了行和列有没有错的时候就不对了吧
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-9-17 14:42:00
33#
回复 32楼q406157290的帖子

如果在RowEditEnding事件里不提交新行,只是给新行设置了UpdateErrorMessage,那么在CellFactory里遍历然后GetErrors是获取不到错误信息的(27#已解释)。我的意思就是你在RowEditEnding事件里检测到错误,并把错误存储到一个变量里,然后在CellFactory中就通过那个存储变量来查找错误信息,并处理(可以存储有错误的DataItem,在CellFactory可以判断重绘的当前行的DataItem在不在这个列表里,并获取其中的UpdateErrorMessage);

至于errorMessage的显示,既然不采用C1FlexGrid自带的,那就自己加上吧,在CellFactory中判断如果为新行,而且通过上面介绍的方式获取到排它错误信息时,手动设置错误提示信息即可:
  1. string errors = GetErrors(rng);// 通过自己的方式获取排它错误
  2. if (!string.IsNullOrEmpty(errors))
  3. {
  4.         grid.ErrorStyle.Apply(bdr);
  5.         this.SetErrorTip(grid, bdr, errors);
  6. }
复制代码
你可以试试看,由于没有Demo验证,我也只是理论理论

评分

参与人数 1金币 +999 收起 理由
Alice + 999 奖励金币

查看全部评分

回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-9-21 18:22:00
34#
回复 33楼KNight的帖子

谢谢反馈。此问题关闭,如果有新问题请开新帖。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
1234
您需要登录后才可以回帖 登录 | 立即注册
返回顶部