Dynamics CRM 2016 子网格增删改查后实时汇总明细金额到主表总金额

问题背景:我们在使用Dynamics CRM开发的过程中会经常遇到一些很奇葩的问题,比如子网格汇总主表我们一般使用插件进行汇总金额,但是汇总完的金额不会实时的在界面上体现,需要刷新一下界面才可以进行看到主表金额的汇总结果。

原因分析:Dynamics CRM平台没有做对子网格增删改查后触发的事件,另外我们通过汇总明细金额的方法是通过Plugin插件触发的,只能在数据库层面更新数据,不能直接刷新前端界面,所以导致用户使用过程中不得不再次刷新一下界面才能看到想要的效果,体验感极其差劲。

解决方案:

1、思路:对子网格做了增删改查后,子网格自己会对自己进行一个刷新,通过这个思路我们可以进行一下延伸,是否可以在子网个自我刷新的过程实现触发主表的字段更新操作。这里一个方法比较关键就是子网格的onLoad事件。当我们子网格自我刷新后是会触发自己的onLoad的事件的,这样就可以通过这个事件为契机进行我们对主表字段数据的操作。

2、上代码

function formOnLoad() {
    //添加子网格加载事件
    Xrm.Page.getControl("subgrid1").addOnLoad(gridOnLoad);

    //子网格刷新
    Xrm.Page.getControl("subgrid1").refresh();
}

function gridOnLoad() {
    //获取到子网格记录数
    var filteredRecordCount = Xrm.Page.getControl("subgrid1").getGrid().getTotalRecordCount();
    if (filteredRecordCount >= 0) {
        SetMoney();
        Xrm.Page.data.entity.save();
    }
    else {
        setTimeout(gridOnLoad, 200);
    }
}
function SetMoney(){
    //Add your logical
    .......
}                    
View Code

3、部署方式

将代码中的方法formOnLoad()放入到主表表单的onLoad事件启用后就可以查看效果了。

4、问题&讨论

如果关于本贴有任何疑问欢迎私信讨论

bzpfly@outlook.com

posted @ 2020-07-24 11:04  夜月之光  阅读(463)  评论(0)    收藏  举报