• 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 的对象层次结构:

    image

    可以看到 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学习笔记 系列汇总

  • 相关阅读:
    NetworkInterface网速监测
    动态编译
    JSON C# Class Generator
    Cookie中的HttpOnly
    webapi session
    没有为扩展名“.html”注册的生成提供程序
    转 C# 使用openssl
    openssl jia adress
    扩展JS
    bootstrap 模态
  • 原文地址:https://www.cnblogs.com/fengwenit/p/4080585.html
走看看 - 开发者的网上家园