不触发propertyChanged值更新事件的三大方法原创
金蝶云社区-上分老开发谭云豪
上分老开发谭云豪
14人赞赏了该文章 161次浏览 未经作者许可,禁止转载编辑于2024年12月16日 17:14:24

在有些需要联动值变化的事件中,我们希望有些值变化不触发propertyChanged事件。

如何处理:

方法一:

在赋值的时候代码如下:

.getModel().beginInit().getModel().setValue().getModel().endInit().getView().updateView()

通过该方法赋值,不会进入propertyChanged事件,也不会触发业务规则,记得最后刷新一下字段

this.getView().updateView("key");


方法二:
不要使用this.getModel().setValue("key",value);

更改为使用 this.getModel().getDataEntity().set("key",value);
                   this.getView().updateView("kddc_decimalfield");
                   也不会触发业务规则。


方法三:beforeFieldPostBack方法中判断是否执行propertyChanged方法,如下

@Override
public void beforeFieldPostBack(BeforeFieldPostBackEvent e) {
    TextEdit operate = (TextEdit) e.getSource();
    String key = operate.getKey();
          if ("kddc_textfield".equals(key)){
//业务逻辑,也可进行赋值操作
              e.setCancel(true);
               }
}


像我们在propertyChanged方法中对一个字段赋相同值,不会走两次propertyChanged方法


图标赞 14
14人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!