zoukankan      html  css  js  c++  java
  • 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学习笔记 系列汇总
     
     
     
  • 相关阅读:
    XTU1199:Number Game
    SSL连接建立过程分析(1)
    JavaScript高级编程II
    PreferenceFragment 使用 小结
    crm使用soap更改下拉框的文本值
    POJ2241——The Tower of Babylon
    四个好看的CSS样式表格
    无论你在哪里上班,请记住下面黄金法则!
    js的for in循环和java里的foreach循环的差别
    具体解释EBS接口开发之物料导入API
  • 原文地址:https://www.cnblogs.com/fengwenit/p/4033583.html
Copyright © 2011-2022 走看看