个人需求是网格自带的条件发生改变时(网格显示的内容会发生改变),同时需要刷新另一个网格的数据源,而另一个网格的数据源是走的这个网格的行焦点改变事件去刷新,自带的条件发生改变时并不会触发行焦点的改变
当前情况是系统里面,所有页面的网格都用的同一个封装的好的网格基类
由于页面过多,不可能在每个需要用到的页面去单独写代码调方法处理这个问题
方案1:
在封装的网格中,单独添加一个行焦点改变事件,外部去实现这个单独封装的事件,而不是走dev GridView原生事件,在网格内部,ColumnFilterChanged时,去调用基类定义的这个方法就可以了
还是同一个问题 页面过多 不可能一个个去调整页面的注册事件,改为自定义的行焦点改变事件
方案2:
找dev网格的方法,看他是怎么去调用自己的行焦点改变事件的,用同样的方法去调用就好了
看他的源码,发现在修改FocusedRowHandle 时,会去调用事件,但是有一个判断过不了,导致无法调用



知道怎么调用的事件了,那就好办了,想办法调用 RaiseFocusedRowChanged 这个方法就好了
可以看到这个方法是 protected 的,无法在外面直接调用,因为是封装的GridControl,而不是GridView
最终通过反射去取方法,手动调用

文章讲述了在面临网格控件条件变化需刷新另一网格数据源,但条件改变不触发行焦点事件的问题时,采用反射调用私有方法来模拟事件触发的解决方案。作者考虑了两种方案,最终通过反射调用RaiseFocusedRowChanged方法解决了问题。
最低0.47元/天 解锁文章
1392

被折叠的 条评论
为什么被折叠?



