找回密码
 立即注册

QQ登录

只需一步,快速开始

Alice
社区贡献组   /  发表于:2016-2-5 15:01:00
31#
回复 29楼q406157290的帖子

在进入编辑状态前会触发BeginningEdit事件,取消CollectionView的编辑,这样就不会增加一行。
设置e.Cancel=true,取消进入编辑状态,从而阻止新行的增加。
你可以参考如下代码:
  1. private void c1FlexGrid1_BeginningEdit_1(object sender, CellEditEventArgs e)
  2.         {
  3.             if (((System.Windows.Data.ListCollectionView)(c1FlexGrid1.CollectionView)).IsAddingNew)
  4.             {
  5.                 ((System.Windows.Data.ListCollectionView)(c1FlexGrid1.CollectionView)).CancelNew();

  6.                 e.Cancel = true;               

  7.             }
  8.         }
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
KNight
中级会员   /  发表于:2016-2-15 09:53:00
32#
你的需求应该就是在新增行后,进行列排序,如果此时新行未通过验证,则自动删除新行,如果通过验证则自动提交新增行,是这样吗?个人觉得这应该属于业务逻辑处理了,毕竟不能完全依赖控件全部都实现用户所提出来的所有需求;
参考解决办法:
因为在列排序事件SortingColumn触发之前,会先触发CellEditEnded事件,即先提交单元格编辑事件,所以可以在CellEditEnded事件中处理需求,添加一个标记当前处于新增事务状态(((ListCollectionView)flexGrid.CollectionView).IsAddingNew),然后在SortingColumn事件中判断,如果标记为新增事务状态,而且新增行(非FlexGrid的最后一行,因为最后一行为NewRowTemplate新行)获取的排他错误不为空,即验证不通过,手动删除最后一行即可(数据源最后一行移除即可);

BTW,新增事务状态(IsAddingNew)是在CellEditEnded事件之后就完成,并变成false的。

评分

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

查看全部评分

回复 使用道具 举报
q406157290
高级会员   /  发表于:2016-2-15 11:46:00
33#
回复 31楼Alice的帖子

谢谢您 但是您的回答跟我的问题好像不符合 不过还是谢谢你
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-2-15 14:04:00
34#
回复 33楼q406157290的帖子

不用客气。
业务逻辑部分还需要自己处理。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2016-2-18 09:07:00
35#
回复 32楼KNight的帖子

好的 谢谢您
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2016-2-18 11:47:00
36#
回复 35楼q406157290的帖子

谢谢反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

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