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学习笔记 系列汇总
Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能的更多相关文章
- Dynamic CRM 2013学习笔记(三十一)自定义用excel批量导入实体数据
有一个实体的子表数据量太大,于是客户想用execel来导入实体数据.首先想到的是用系统自带的Import Data,客户嫌太麻烦,比如lookup字段要做map等. 下面是具体的实现步骤: 一.定义e ...
- Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮
上次介绍了 Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 现在开始介绍如何配置审批流,首先在form上添加三个按钮,Submit, Agree, Reject: 1. ...
- Dynamic CRM 2013学习笔记(四十一)流程4 - 异步工作流(Workflow)用法图解
在CRM 2013 里,工作流被分成二类:异步工作流和实时工作流.异步工作流依赖一个windows 服务: Microsoft Dynamics CRM Asynchronous Processing ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- Dynamic CRM 2013学习笔记(十二)实现子表合计(汇总,求和)功能的通用插件
上一篇 Dynamic CRM 2013学习笔记(十一)利用Javascript实现子表合计(汇总,求和)功能 , 介绍了如何用js来实现子表合计功能,这种方法要求在各个表单上添加js方法,如果有很多 ...
- Dynamic CRM 2013学习笔记(十三)附件上传 / 上传附件
上传附件可能是CRM里比较常用的一个需求了,本文将介绍如何在CRM里实现附件的上传.显示及下载.包括以下几个步骤: 附件上传的web页面 附件显示及下载的附件实体 调用上传web页面的JS文件 实体上 ...
- Dynamic CRM 2013学习笔记(九)CrmFetchKit.js介绍:Fetchxml、多表联合查询, 批量更新
CrmFetchKit.js是一个跨浏览器的一个类库,允许通过JavaScript来执行fetch xml的查询,还可以实现批量更新,分页查询等.目前已支持Chrome 25, Firefox 19 ...
- Dynamic CRM 2013学习笔记(十八)根据主表状态用JS控制子表自定义按钮
有时要根据主表的审批状态来控制子表上的按钮要不要显示,比如我们有一个需求审批通过后就不能再上传文件了. 首先打开Visual Ribbon Editor, 如下图,我们可以利用Enable Rules ...
- Dynamic CRM 2013学习笔记(二十三)CRM JS智能提示(CRM 相关的方法、属性以及页面字段),及发布前调试
我们知道在CRM的js文件里引用XrmPageTemplate.js后,就可以实现智能提示,但每个js文件都引用太麻烦了,其实可以利用vs的功能让每个js文件自动实现智能提示CRM的js: 另外,我们 ...
随机推荐
- a标签鼠标经过,字颜色和下划线的颜色都变红
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- web开发-给即将毕业实习生的一点面试经验
简历投递: 智联招聘51job 像赶集网和58同城最好别去投 面试的公司,特别是深圳这边,面试的时候公司小,很多人,八九不离十是那种搞培训的,很多时候,有些公司会主动打电话来教你去面试,这些绝大多数也 ...
- js中~~的用法
~~(Math.random()*(1<<24))).toString(16) ~~的作用相当于parseInt
- modelsim基本操作步骤及每步骤问题解决1(后续有改动会更新)
①File ->New =>Project出现工程对话框->1)工程命名,2)安放路径自己设置,3)库默认work.点击OK 然后出现添加文件到工程对话框->可新建文件或直接添 ...
- 解决C# 转到定义时打开的是元数据文件而非源代码文件的问题
原因:添加引用时 使用的是“浏览"选项卡,选择了项目生成的dll作为引用的内容. 解决:添加引用时 使用的是"项目"选项卡,选择了项目本身作为引用的内容.
- iOS开发-xcdatamodeld文件 CoreData的介绍和使用,sqlite的使用
CoreData的介绍和使用 源引:http://www.jianshu.com/p/d027090af00e CoreData是数据存储的一种方式,CoreData实质也是对SQLite的封装. ...
- iOS button 里边的 字体的 摆放
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; button.titleEdgeInsets ...
- [转] MovieClip转Bitmap方法
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; ...
- 技术英文单词贴--W
W widget 小工具,小部件
- Sql 中text类型字段判断是否为空
用 len关键字,字段=''会报错:数据类型 text 和 varchar 在 equal to 运算符中不兼容. 正确方法: 1. 字段 is null 2. datalength(字段)=0 注: ...