Dynamic CRM 2013学習ノート(十一)Javascriptを利用してサブテーブルの合計(まとめ、合計)機能を実現する.
4293 ワード
私たちは常にこのような需要があります.サブテーブルに新しい数値を加えたり、修正したりした後、すぐにメインテーブルにそれらを表示します.プラグインで実現すれば、合計は可能ですが、ページ上でもう一度更新しないと正確に表示されません.この時はJSでこの機能を実現することを考慮して、自動的にページを更新して、合計の値をすぐにメインテーブルに表示させます.
サブテーブルの新規追加または修正が完了したら、保存して閉じたら、システムが自動的にサブテーブルのリストを更新して、新しいサブテーブルのデータ行を表示します.このサブテーブルのリフレッシュ機能を利用して、値を計算して表示できるかと思います.
詳細な実現方法を紹介します.
1.SubGridのRefreshイベントを書き換え、SubGridの更新時にイベントを登録し、SubGrid itemの積算計算を完了する.
サブテーブルの新規追加または修正が完了したら、保存して閉じたら、システムが自動的にサブテーブルのリストを更新して、新しいサブテーブルのデータ行を表示します.このサブテーブルのリフレッシュ機能を利用して、値を計算して表示できるかと思います.
詳細な実現方法を紹介します.
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 ノートシリーズのまとめ