Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能
我们经常有这样一种需求,子表里新加或修改一数值后,要马上在主表里把它们的和显示在主表上。如果用插件来实现,可以实现求和,但页面上还要刷新一下才能显示正确。这时就考虑到用JS来实现这一功能,并自动刷新页面,让求和的值马上显示在主表上。
子表上新加或修改完,保存并关闭后,系统会自动刷新子表列表,以显示新的子表数据行,这时就想到是不是可以利用这个子表的刷新功能来计算并显示值。
下面介绍详细的实现方法:
1. 重写SubGrid的Refresh事件,SubGrid刷新的时候注册一个事件,完成SubGrid item的累加计算
1: (function (window, undefined) {
2: var preRefresh = Mscrm.GridControl.prototype.Refresh;
3: Mscrm.GridControl.prototype.Refresh = function () {
4: preRefresh.apply(this);
5: fireCallback.apply(this);
6: }
7: var oneEvent = null;
8: Mscrm.GridControl.add_onRefresh = function (json) {
9: oneEvent = json;
10: }
11: function fireCallback() {
12: if (oneEvent && oneEvent.controlId && oneEvent.controlId == this.get_id()) {
13: oneEvent.callback.apply(this, null);
14: }
15: }
16: })(window);
17:
18: Mscrm.GridControl.add_onRefresh({
19: controlId: "chart_btl_postm", callback: function () {
20: sumCost("new_sum_cost_bp", "new_cost", "new_btl_posm");
21: }
22: });
这里的sumCost的方法就是计算并显示值到主表上
2.计算并显示方法
1: function sumCost(sumFieldNmae, subFiledName, subEntityName) {
2: var amount = 0;
3: var key = "new_marketing_planid/Id";
4: var value = Xrm.Page.data.entity.getId();
5: //var query = "new_btl_posmSet?$select=new_cost&$filter=new_marketing_planid/Id eq guid'123'";
6: var query = subEntityName + "Set?$select=" + subFiledName + "&$filter=" + key + " eq guid'" + value + "'";
7: var result = ODataRetrieve(query);
8: if (result != null && result.results.length > 0) {
9: for (var i = 0; i < result.results.length; i++) {
10: amount += Number(result.results[i].new_cost);
11: }
12: }
13:
14: Xrm.Page.getAttribute(sumFieldNmae).setValue(amount);
15: }
3. 把js文件加到form上,刷新页面,马上就可以看到效果了
Dynamic CRM 2013学习笔记 系列汇总
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?