Dynamic CRM 2013学習ノート(十一)Javascriptを利用してサブテーブルの合計(まとめ、合計)機能を実現する.

4293 ワード

私たちは常にこのような需要があります.サブテーブルに新しい数値を加えたり、修正したりした後、すぐにメインテーブルにそれらを表示します.プラグインで実現すれば、合計は可能ですが、ページ上でもう一度更新しないと正確に表示されません.この時は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  ノートシリーズのまとめ