Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用
一个Form里经常会有好几个Tab,有时要根据一些条件设置哪些Tab可用,可见。下面就介绍下如何用JS对Tab进行控制。
1. 控制可见
function setTabVisableByName(tabName, flag) {var control = Xrm.Page.ui.tabs.get(tabName);control.setVisible(flag);}
这里flag是true或false
2. 控制可用
看了上面的可见代码,是不是以为可用也这么简单呢?其实我们把上面的setVisible改成setDisabled,会报错:
control.setDisabled is not a function
先看下Xrm.Page 的对象层次结构:
可以看到 tabs –> sections –> controls 这个层次结构。
于是就写了下面的代码:
function disableTab(tabName, flag) {debugger;var sections = Xrm.Page.ui.tabs.get(tabName).sections.get();for (var j in sections) {var controls = sections[j].controls.get();for (var i in controls) {var control = controls[i];var controlType = control.getControlType();if (controlType != "iframe" && controlType != "webresource" && controlType != "subgrid") {if (control != null && control.getDisabled() == !flag) {control.setDisabled(flag);}}}}}
其中有一行是判断control的类型:
if (controlType != "iframe" && controlType != "webresource" && controlType != "subgrid") {
这行代码是后来加上的,因为当时出现了一个很奇怪的现象,新建或查看记录时,没问题,但新建保存时总是会报这个错误:
control.setDisabled is not a function
加上这行后就ok了,这个问题当时花了我好长时间。
如果是要把整个form都禁用呢,可以用下面的代码,更简洁:
Xrm.Page.ui.controls.forEach(function (control, index) {var controlType = control.getControlType();if (controlType != "iframe" && controlType != "webresource" && controlType != "subgrid")) {control.setDisabled(flag);}});
Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用的更多相关文章
- Dynamic CRM 2013学习笔记(六)备份和恢复
这节我们将讨论下怎么维护CRM,包括以下主要内容: 备份CRM DB 备份CRM 系统 恢复CRM DB 恢复 CRM 系统 一. 备份CRM DB 下面的步骤将为CRM DB创建一个维护计划 ...
- Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
我们经常要对表单里各种类型的字段进行读取或赋值,下面列出各种类型的读写方法及注意事项: 1. lookup 类型 清空值 var state = Xrm.Page.getAttribute(" ...
- Dynamic CRM 2013学习笔记 系列汇总
这里列出所有 Dynamic CRM 2013学习笔记 系列文章,方便大家查阅.有任何建议.意见.需要,欢迎大家提交评论一起讨论. 本文原文地址: Dynamic CRM 2013学习笔记 系列汇总 ...
- Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色
上次介绍过CRM里开始报表的一些注意事项:Dynamic CRM 2013学习笔记(十五)报表入门.开发工具及注意事项,本文继续介绍报表里的一些动态效果:动态显示参数,参数是从数据库里查询出来的:参数 ...
- Dynamic CRM 2013学习笔记(四十六)简单审批流的实现
前面介绍过自定义审批流: Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示 Dynamic CRM 2013学习笔记(二十一)自定义审批流2 - 配置按钮 Dynamic ...
- Dynamic CRM 2013学习笔记(二十)字段改变事件的二种实现方法
CRM里有二种方式实现字段change事件,一种是在form里,一种完全通过js来实现.本文介绍下二者的用途及区别. 1. Form里用法 这种方式估计其实也是添加一个js的function. 这种方 ...
- Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能
前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...
- Dynamic CRM 2013学习笔记(二十九)报表设计:reporting service 报表开发常见问题
在报表开发过程中,经常会遇到各种各样的问题,比如The report cannot be displayed. (rsProcessingAborted),一点有意义的提示都没有:再就是分页问题,经常 ...
- Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置
上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...
随机推荐
- html和css基础
背景: 最近公司开发BS架构的项目,公司主要业务也不是做BS开发的,没有项目经理,没有美工,没有前端,界面丑的不要不要的,哈哈哈 然后咧,使用asp.net用着用着,技术老大觉得界面怎么可以这么丑,不 ...
- 机器学习中的算法——决策树模型组合之随机森林与GBDT
前言: 决策树这种算法有着很多良好的特性,比如说训练时间复杂度较低,预测的过程比较快速,模型容易展示(容易将得到的决策树做成图片展示出来)等.但是同时,单决策树又有一些不好的地方,比如说容易over- ...
- 如何分隔两个base64字符串?
如何分隔两个base64字符串? 用逗号或者任意的不在base64字符串内的字符都可以. All you have to do is to use a separator which is n ...
- avalon2学习教程13组件使用
avalon2最引以为豪的东西是,终于有一套强大的类Web Component的组件系统.这个组件系统媲美于React的JSX,并且能更好地控制子组件的传参. avalon自诞生以来,就一直探索如何优 ...
- kindeditor编辑器的使用
KindEditor是一款用Javascript编写的开源在线HTML编辑器,主要用户是让用户在网站上获得可见即可得的编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(texta ...
- 《深入理解Nginx》阅读与实践(一):Nginx安装配置与HelloWorld
最近在读陶辉的<深入理解Nginx:模块开发与架构解析>,一是想跟着大牛练练阅读和编写开源代码的能力,二是想学学Nginx优秀的架构设计,三是想找一个点深入下Linux下网络编程的细节.侯 ...
- Add Binary <leetcode>
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...
- html中的块元素(Block)和内联元素(Inline)(转)
我们首先要了解,所有的html元素,都要么是块元素(block).要么是内联元素(inline).下面了解一下块元素.内联元素各自的特点: 块元素(block)的特点: 1.总是在新行上开始:2.高度 ...
- Get the Uniqueid of Action Originate in the AMI
[asterisk-users] Get the Uniqueid of Action Originate in the AMI Adolphe Cher-Aime acheraime at gmai ...
- HttpURLConnection 下载文件
String fileUrl = request.getRequestURL().substring(0, request.getRequestURL().indexOf("/rest&qu ...