项目中会遇到这样的需求,会根据subgrid中的数据变化去更新主表单中的某个或多个字段值,一般的做法就是写插件根据subgrid中实体数据的变化在后台更新主表数据库,但后台更新了要反映到前台就得使用刷新操作了。

为实现这个功能有两种方式:

1、在主表单加一个定时任务,定时的去捞取后台数据库的数据和前台比较,看是否一致如果不一致则刷新主页面加载最新的数据,代码如下,第一行放在onload事件中

setTimeout(checkTable, 5000);
function checkTable() {
retrieveRecord(Xrm.Page.data.entity.getId(), 'xxSet',
function (data, textStatus, XmlHttpRequest) {
if (data != null && data.new_money.Value != Xrm.Page.getAttribute("new_money").getValue()) {
Xrm.Page.data.entity.save();
Xrm.Page.data.refresh();
}
}, null, false);
setTimeout(checkTable, 5000);
}

2、向subgrid的refresh事件追加一个事件来刷新主表单。这种方式优于第一种,因为前者会不停的向后台发送查询请求显然影响性能。代码如下,第一行放在onload事件中

setTimeout(SubGridRefresh, 2500);

function SubGridRefresh() {
var grid = document.getElementById("subgridName");
if (grid) {
grid.control.add_onRefresh(function () { window.location.reload(true);; });
}
}

这边给绑定事件添加了2.5秒的延迟,因为这样能保证整个页面都加载完后再执行。这里的刷新事件可以用SDK中提供的Xrm.Page.data.refresh(),但实际使用后会发现会无限刷所以弃用。但用window.loaction.reload()也有个问题,当我点击主表单的保存按钮后系统会调用refresh方法进行局部刷新,那subgrid就会刷新导致调用一次页面的reload刷新整个页面,用户体验不是很好。

所以上述两种方式看你选择哪种了,如果你有第三种方式还望不吝赐教。



Dynamics CRM 2013 subgrid刷新后刷新主表单的更多相关文章

  1. Dynamics CRM 4.0升级Dynamics CRM 2013后全局Ribbon的修改

    最近在为一个客户在Dynamics CRM 4.0到Dynamics CRM 2013的升级,升级之后发现原来在Dynamics CRM 4.0中定义的全局Ribbon按钮像牛皮癣一样,在每个实体页面 ...

  2. Step by step Dynamics CRM 2011升级到Dynamics CRM 2013

    原创地址:http://www.cnblogs.com/jfzhu/p/4018153.html 转载请注明出处 (一)检查Customizations 从2011升级到2013有一些legacy f ...

  3. Dynamics CRM 2013 installation

    原创地址:http://www.cnblogs.com/jfzhu/p/3445820.html 转载请注明出处 一 硬件要求 1. CRM Server 下表对硬件的要求是假定Microsoft S ...

  4. Dynamics CRM 2013 SP1 升级到Dynamics CRM 2015

     首先截图一下我要升级的Dynamics CRM 2013版本如下图,可以看到是打了SP1后的CRM 2013.         运行CRM 2015简体中文版的安装文件CRM2015-Server- ...

  5. Microsoft Dynamics CRM 2013 --选项集的多选

    由于从Microsoft Dynamics CRM 2011到Microsoft Dynamics CRM 2013,界面的风格发生了很大的变化 故原先在2011上开发的选项集多选在2013上面已经不 ...

  6. Dynamics CRM 2013 初体验(1):系统的安装

    最近收到Microsoft的Dynamics CRM 2013 beta测试邀请,终于让我掀开了它神秘的面纱.自从去年的Dynamics CRM 2012 December补丁包发布后,系统就添加了很 ...

  7. Dynamics CRM 2013开始推出的服务器端同步来配置邮件服务

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  8. Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs

      Microsoft Dynamics CRM 2013   BTW: RC stands for Release for Candidate, and RTM stands for Release ...

  9. Microsoft Dynamics CRM 2013 安装程序及SDK 下载地址

    Microsoft Dynamics CRM 2013 已经具有相关资料 2013 Setup (Microsoft Dynamics CRM Server 2013) 下载地址: http://ww ...

随机推荐

  1. JS的forEach和map方法的区别,还有一个$.each

    forEach()和map()两个方法都是ECMA5中Array引进的新方法,主要作用是对数组的每个元素执行一次提供的函数,但是它们之间还是有区别的.jQuery也有一个方法$.each(),长得和f ...

  2. 3.5 find() 判断是否存在某元素

    vector 判断是否存在某元素: if(find(A.begin(), A.end(), A[i]) != A.end()){ // 若存在 A[i] // find() 返回一个指针 }

  3. 记录 Python3 安装 Scrapy 遇到的问题

    开发环境:Windows 10 + Python 3 使用 pip 去安装 Scrapy,  pip install scrapy , 报了一个错误. 原因:加 --user 的作用是显式指定安装在用 ...

  4. map函数用法详解

    map函数是Python内置的高阶函数,它是一个典型的函数式编程例子.它的参数为: 一个函数function.一个或多个sequence.通过把函数function依次作用在sequence的每个元素 ...

  5. python学习之路前端-HTML

    HTML概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以 ...

  6. 分别用face++和百度获取人脸属性(python单机版)

    称之为单机版,主要是相对于调用摄像头实时识别而言.本篇主要py2下利用face++和百度接口获取本地图片中的人脸属性,并按照一定格式保存数据. face++版 face++是刚注册的,只能用一个试用的 ...

  7. ubuntu重装指定版本的mysql

    查看错误log cat /var/log/mysql/error.log 首先彻底删除mysql,比如版本5.5 apt-get autoremove --purge mysql-server-5.5 ...

  8. Request JSON

    https://developer.android.com/training/volley/request.html Request JSON Volley provides the followin ...

  9. Bootstrap3 栅格系统-媒体查询

    在栅格系统中,我们在 Less 文件中使用以下媒体查询(media query)来创建关键的分界点阈值. /* 超小屏幕(手机,小于 768px) */ /* 没有任何媒体查询相关的代码,因为这在 B ...

  10. Android开发之手把手教你写ButterKnife框架(二)

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开 ...