快捷搜索:

Dynamic CRM 2013学习记录(11)JS实现子表合计(汇总

我们常常有这样一种需求,子表里新加或改动一数值后,要顿时在主表里把它们的和显示在主表上。假如用插件来实现,可以实现乞降,但页面上还要刷新一下才能显斧精确。这时就斟酌到用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

10:amount += Number(result.results[i].new_cost);

11:}

12:}

13:

14:Xrm.Page.getAttribute(sumFieldNmae).setValue(amount);

15: }

3. 把js文件加到form上,刷新页面,顿时就可以看到效果了

您可能还会对下面的文章感兴趣: