前段时间微软发布了Dynamics 365,这是Dynamics产品的又一次大的变动,期待新的版本能够更好的满足客户的需求,同时提供更多的可定制化的内容。

近期做Dynamics CRM项目遇到很多审批的业务,用户A提交审批给用户B,这时如果审批记录没有做分派即审批记录的负责人没有发生改变,通常情况下都会把审批记录对申请人不可编辑。

常见的做法是:依据记录的审批状态,在记录页面加载时使用JS方法,遍历停用页面上的所有控件。

但会遇到一个问题,子网格是无法停用的,子网格右上角的”+”仍然可以点击,仍然可以在子网格中直接删除关联记录,该如何处理呢?

我接触到处理方法:

1、  在页面加载完成后,使用JS方法隐藏”+”对应的div。(这不是官方支持的方法,而且如果系统升级,随时可能失效)。

2、  对子网格实体添加插件,当用户编辑子网格数据的时候,通过插件去做检验,抛异常告诉用户该子网格不可编辑。(这种方式用户体验度不是很好,并且增加了开发人员的工作量)。

下边我以报销申请为例介绍一种官方支持的方式:

实现思路:

为 ”+” 按钮添加JS可用规则,当审批条件不是草稿时不显示。

首先,我们先看下申请页面处理后的效果,图中 报销申请:案例 = 1:N

具体的操作:

1、  在报销页面上添加“审批状态”字段。

2、  使用Ribbon Workbench 为 案例 实体的新建、删除、编辑等按钮添加可用规则。

配置好脚本及脚本方法HideSunGridBtn.subGridBtnEnRule

为各按钮添加可用规则

最后,发布解决方案。

JS代码:

var FORM_TYPE_CREATE = 1;

var FORM_TYPE_UPDATE = 2;

var HideSunGridBtn = (function () {

return {

//页面的onload方法

onload: function () {

//审批状态

var statusValue = Xrm.Page.getAttribute("new_status").getValue();

//不是草稿状态时停用所有控件

if (statusValue != 1) {

HideSunGridBtn.DisableFormFields();

}

},

//停用子网格上的“+”和删除功能

subGridBtnEnRule: function () {

var statusValue = Xrm.Page.getAttribute("new_status").getValue();

var statecode = Xrm.Page.getAttribute("statecode").getValue();

var formType = Xrm.Page.ui.getFormType();

//审批状态=草稿 状态=可用  窗体类型=2

if (statusValue == 1 && statecode == 0 && formType == FORM_TYPE_UPDATE) {

return true;

}

return false;

},

//停用页面上的所有控件

DisableFormFields: function () {

Xrm.Page.ui.controls.forEach(function (control, index) {

if (HideSunGridBtn.DoesControlHaveAttribute(control)) {

control.setDisabled(true);

}

});

},

DoesControlHaveAttribute: function (control) {

var controlType = control.getControlType();

return controlType != "iframe" && controlType != "webresource" && controlType != "subgrid";

}

};

})();

Dynamics CRM记录页面上隐藏子网格“+”标识的更多相关文章

  1. Dynamics CRM定制子网格添加按钮实例之二:调试代码、打开Web资源及获取选择的记录

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复222或者20160501可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  2. Dynamics CRM定制子网格添加按钮实例之一

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复221或者20160430可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  3. Dynamics CRM 在表单上显示更改历史记录(审核历史记录)

    前言 虽然Dynamics CRM自带的审计很好,但是对于缺乏使用CRM经验的用户来说,自带的UCI界面实在是太隐藏了: 于是乎就出现了需求:想通过在表单上直接看到看审计历史记录: 在网上搜索了很多中 ...

  4. Dynamics 365 你所期待的子网格编辑终于来了

    Dynamics 365的online版本已经在11月1号发布了,on-premises版也在没几天后发布,今天略看了一眼 what's new 一眼就看到了 editable grids,这个不用我 ...

  5. Microsoft Dynamics CRM 增删改子表汇总子表的某个字段到主表的某个字段(通用插件)

    背景 经常有某个汇总子表的数量到主表的总数量,或者汇总子表的总价到主表的总价这种需求. 传统的做法: 1.就是为每个子表实体单独写成一个插件,但是这样不好复用. 2.主表的汇总字段是汇总货币类型,但是 ...

  6. 在Dynamics CRM中自定义一个通用的查看编辑注释页面

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复162或者20151016可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 注释在CRM中的显示是比较特别, ...

  7. Microsoft Dynamics CRM 2011 面向Internet部署 (IFD) ADFS虚拟机环境搭建的步骤(CRM与ADFS装在同一台服务器上) 摘自网络

    1: 安装windows server 2008 R2 中文版 (过程略) 安装完成后设置机器名和IP地址, 本过程机器名 crm5dev,192.168.0.110 dns: 192.168.0.1 ...

  8. Dynamic CRM 2015学习笔记(6)没有足够的权限 - 您没有访问这些记录的权限。请联系 Microsoft Dynamics CRM 管理员

    我们经常遇到下面这种问题:没有足够的权限 - 您没有访问这些记录的权限.请联系 Microsoft Dynamics CRM 管理员.  下面将详细介绍下如何解决这种问题:进不了CRM系统:进了CRM ...

  9. 在标准实体特殊消息上注册插件及Dynamics CRM 2015中计算字段的使用

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复157或者20151005可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 前面的 插件系列博客教程 讲述了 ...

随机推荐

  1. 详解ASP.NET MVC应用程序请求生命周期

    ------转载当一个ASP.NET MVC应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在ASP.NET MVC应用程序Http request 和Http response 过程中, ...

  2. Android学习手记(4) BroadcastReceiver监听电池信息

    Android 中,Broadcast是一种在应用程序之间进行传输信息的机制.BroadcastReceiver对发送过来的Broadcast进行过滤和响应.根据这种机制,我们可以获取电池现有电量等信 ...

  3. Linux wget下载https类型文件报错解决方法 转自老左博客

    原文链接:http://www.laozuo.org/3648.html 一般我们远程调用下载文件直接用wget就可以,一般文件路径类型是http.如果有遇到是https就会下载出错,稍微不注意的新手 ...

  4. Nuc900 bsp turbowriter使用注意点

    Nuc900 bsp turbowriter使用注意点 一. Nor flash 用turbo 烧写kernel和文件系统时的注意点: 1. kernel的image No要大于rootfs 2.烧写 ...

  5. rsync指令详解

    rsync指令详解(更详细的看官方文档http://rsync.samba.org/ftp/rsync/rsync.html) [root@Centos epel]# rsync --help rsy ...

  6. 使用 HTTP 缓存机制提升系统性能

    摘要 HTTP缓存机制定义在HTTP协议标准中,被现代浏览器广泛支持,同时也是一个用于提升基于Web的系统性能的广泛使用的工具.本文讨论如何使用HTTP缓存机制提升基于Web的系统,以及如何避免误用. ...

  7. ECSTORE 关于FILTER条件所代表的含义

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 //以下为ecstore filter条件所代表的含义 $FilterArray= array(         ' ...

  8. 函数式编程做用户登陆注册练习-pycharm上

    def login(username,password): """ 用户登陆 :param username: 用户名 :param password:密码 :retur ...

  9. xpath应用

    import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.El ...

  10. DOS头 IMAGE_DOS_HEADER

    IMAGE_DOS_HEADER STRUCT { +0h WORD e_magic // Magic DOS signature MZ(4Dh 5Ah) DOS可执行文件标记 +2h WORD e_ ...