找回密码
 立即注册

QQ登录

只需一步,快速开始

daoerkeji

金牌服务用户

3

主题

8

帖子

101

积分

金牌服务用户

积分
101

微信认证勋章

最新发帖
daoerkeji
金牌服务用户   /  发表于:2020-3-25 14:41  /   查看:3827  /  回复:6
1金币
C1FlexGrid设置了   AllowAddNew="True"
界面上我可以在grid上添加一行,但是添加行的数据我如何才能捕捉到?

条件:
用MVVM模式绑定的
数据源是ObservableCollection<T>,
我可以注册数据源的CollectionChanged事件

现象
当我添加一条新的数据(鼠标点击新加行),还没来来得及输入任何数据,数据源的CollectionChanged事件就会触发,这时候数据源假设是3条数据(原来有2条)。
当我输入完东西之后,在按回车。据源的CollectionChanged事件又触发一次,但是数据源依然是3条数据。但是我在CollectionChanged 的参数里能找到新加的数据,但是我输入的值是没有的

最佳答案

查看完整内容

目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据源中新增的一行中。 如果需要捕捉的话,只能是用Grid_RowEditEnded事件,然后判断e.Row是否是0来确定是否是新增行

6 个回复

倒序浏览
最佳答案
最佳答案
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-25 14:41:59
来自 4#
目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据源中新增的一行中。

如果需要捕捉的话,只能是用Grid_RowEditEnded事件,然后判断e.Row是否是0来确定是否是新增行
  1.         private void Grid_RowEditEnded(object sender, CellEditEventArgs e)
  2.         {
  3.             if (e.Row == 0)
  4.             {
  5.                 var customer = data[data.Count-1];
  6.             }
  7.         }
复制代码

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-25 16:38:50
2#
我看你这边也改的开发包自带的项目,请将您这边目前修改后的项目发上来,我帮您验证一下
回复 使用道具 举报
daoerkeji
金牌服务用户   /  发表于:2020-3-25 17:00:29
3#
Richard.Ma 发表于 2020-3-25 16:38
我看你这边也改的开发包自带的项目,请将您这边目前修改后的项目发上来,我帮您验证一下

NewRow.xaml  这页面

本帖子中包含更多资源

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

x
回复 使用道具 举报
daoerkeji
金牌服务用户   /  发表于:2020-3-25 17:55:43
5#
Richard.Ma 发表于 2020-3-25 17:51
目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据 ...

这个功能是很常见啊,既然我想添加新行,我肯定需要保存,或者对他进行操作  我记得你们之前老版本的flex有rowstatus,然后新版本就删掉了,这个不考虑后期把新加对象吐出来么
回复 使用道具 举报
daoerkeji
金牌服务用户   /  发表于:2020-3-25 19:03:36
6#
Richard.Ma 发表于 2020-3-25 17:51
目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据 ...

不管怎么样   It works,  非常感谢
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-26 09:29:01
7#
不客气,目前确实没有类似于rowstatus的熟悉来获取新增的行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部