首页 > 代码库 > Dynamic CRM 2013学习笔记(十一)利用Javascript求子表某值的和到主表
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 = http://www.mamicode.com/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学习笔记 系列汇总Dynamic CRM 2013学习笔记(十一)利用Javascript求子表某值的和到主表
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。