daoerkeji 发表于 2020-3-25 14:41:58

C1FlexGrid设置了 AllowAddNew="True" 如何监测新加的对象

C1FlexGrid设置了   AllowAddNew="True"
界面上我可以在grid上添加一行,但是添加行的数据我如何才能捕捉到?

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

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

Richard.Ma 发表于 2020-3-25 14:41:59

目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据源中新增的一行中。

如果需要捕捉的话,只能是用Grid_RowEditEnded事件,然后判断e.Row是否是0来确定是否是新增行
      private void Grid_RowEditEnded(object sender, CellEditEventArgs e)
      {
            if (e.Row == 0)
            {
                var customer = data;
            }
      }

Richard.Ma 发表于 2020-3-25 16:38:50

我看你这边也改的开发包自带的项目,请将您这边目前修改后的项目发上来,我帮您验证一下

daoerkeji 发表于 2020-3-25 17:00:29

Richard.Ma 发表于 2020-3-25 16:38
我看你这边也改的开发包自带的项目,请将您这边目前修改后的项目发上来,我帮您验证一下

NewRow.xaml这页面

daoerkeji 发表于 2020-3-25 17:55:43

Richard.Ma 发表于 2020-3-25 17:51
目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据 ...

这个功能是很常见啊,既然我想添加新行,我肯定需要保存,或者对他进行操作我记得你们之前老版本的flex有rowstatus,然后新版本就删掉了,这个不考虑后期把新加对象吐出来么

daoerkeji 发表于 2020-3-25 19:03:36

Richard.Ma 发表于 2020-3-25 17:51
目前看来因为新增行是一个内部的操作,没有相关的事件可以专门捕捉,新增行失去焦点后就会将数据保存到数据 ...

不管怎么样   It works,非常感谢

Richard.Ma 发表于 2020-3-26 09:29:01

不客气,目前确实没有类似于rowstatus的熟悉来获取新增的行
页: [1]
查看完整版本: C1FlexGrid设置了 AllowAddNew="True" 如何监测新加的对象