上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多实体要实现这个功能,有人觉得有点麻烦了,就不太喜欢这种方式,于是我写了一个通用的子表合计功能的通用插件,只用在注册插件时,填写不同的参数就可以实现这个功能了。

1. 首先看下效果:

 

2. 注册方法:

我们需要在子表上对create和update方法进行注册:

注册时要填写4个参数:

第一个参数是要被合计的子表字段,第二个参数是主表的主健,第三个参数是主表实体名,第四个参数是主表上显示合计值的字段。

注册update时,要注意把子表里关联主表的字段,也是主表的主健要加到image里,以方便插件里使用,而且可以加上filter 属性,只用在这个字段时才触发这个插件:

 

3. 实现方法

  • 获取当前实体
  1: Entity entity = (Entity)context.InputParameters["Target"];
  2: Entity preEntity = msg == "update" ? (Entity)context.PreEntityImages["preEntity"] : entity;

 

  • 获取参数
  1: public SumSubgrid(string unsecure)
  2: {
  3:     m_config = unsecure;
  4: }

 

  • 合计获取子表

            使用 OrganizationServiceContext svcContext = new OrganizationServiceContext(adminService) 来读写实体

  1: var ents = svcContext.CreateQuery(entity.LogicalName).Where(e => e[parameters[1]] == preEntity[parameters[1]] && e[parameters[0]] != null).Select(e => e[parameters[0]]);
  2: decimal amount = 0;
  3: foreach (var ent in ents)
  4: {
  5:   amount += Convert.ToDecimal(ent);
  6: }

 

  • 把合计值保存到主表上的合计字段
  1: var primaryEnt = svcContext.CreateQuery(parameters[2]).Where(e => e[parameters[1]] == preEntity[parameters[1]]).FirstOrDefault();
  2: primaryEnt[parameters[3]] = amount;
  3: svcContext.UpdateObject(primaryEnt);
  4: svcContext.SaveChanges();

 

是不是很简洁,大功告成!

 

Dynamic CRM 2013学习笔记 系列汇总

最新文章

  1. 推荐几款我一直在用的chrome插件(下)
  2. html视频播放器的代码 及其参数详解
  3. css 之 文本缩进属性(text-indent)
  4. Jquery cxColor 示例演示
  5. 品牌OEM信息导入工具(实测支持Win10)
  6. 翻译-In-Stream Big Data Processing 流式大数据处理
  7. 北京联想招聘-Android高级工程师(5-7年) 加入qq 群:220486180 或者直接在此 留言咨询
  8. jQuery工具函数
  9. 24个有用的PHP类库分享
  10. nginx 采用https 协议通信配置
  11. python excel操作总结
  12. intellij idea创建maven项目
  13. MS SQL CASE WHEN 的用法
  14. Tennis Game CodeForces - 496D(唯一分解定理,费马大定理)
  15. ajax返回json时,js获取类型,是字符串类型
  16. Spark Stage切分 源码剖析——DAGScheduler
  17. Android5.0中Material Design的新特性
  18. mtrace检查内存泄漏
  19. 自定义tarBar
  20. Form表单如何可以传递多个值传递List数组对象到后台的解决办法

热门文章

  1. Scala伴生类和伴生对象
  2. ajax执行完成后,再执行下面的代码的解决办法
  3. weed-fs 压力测试
  4. mysql的从头到脚优化之数据库引擎的选择(转载)
  5. http://10.11.112.12:8000/homePage.jsp?loginMode=JS
  6. machine learning----->什么是机器学习
  7. 线程本地变量ThreadLocal (耗时工具)
  8. UIScrollViewDelegate
  9. .NET实现高效过滤敏感查找树算法(分词算法):
  10. Selenium2+python自动化17-JS处理滚动条