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 ....... }
3、部署方式
将代码中的方法formOnLoad()放入到主表表单的onLoad事件启用后就可以查看效果了。
4、问题&讨论
如果关于本贴有任何疑问欢迎私信讨论
bzpfly@outlook.com
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.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产生公共签名,避免每次插件换环境重新输入签名密钥账号密码