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 @   夜月之光  阅读(432)  评论(0编辑  收藏  举报
编辑推荐:
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 【.NET】调用本地 Deepseek 模型
历史上的今天:
2019-07-24 Visual Studio 2015 无法加载.Net FrameWork4.6.2
2019-07-24 Dynamics CRM产生公共签名,避免每次插件换环境重新输入签名密钥账号密码
点击右上角即可分享
微信分享提示