Dynamics CRM Javascript making form read only -TypeError: control.getDisabled is not a function

Dynamics CRM Javascript making form read only -TypeError: control.getDisabled is not a function

尝试将价目表表格和价格项目表格设置为只读并使用下面的 java 脚本,但不断出现以下错误; 此记录的脚本之一导致错误。有关详细信息,请下载日志文件。 TypeError: control.getDisabled 不是 makeFieldsReadOnly

的函数

使用 Dynamics CRM 2016 并且此 JS 在加载表单

时运行
function onLoad() {
    var formType = Xrm.Page.ui.getFormType();

    if (formType == 2)
        makeFieldsReadOnly(); }


function makeFieldsReadOnly() {
    var controls = Xrm.Page.ui.controls.get();
    for (var i in controls) {
        var control = controls[i];
        if (!control.getDisabled()) {
            control.setDisabled(true);
       }
    } }

关于为什么这可能会失败,在 CRM 2011 中工作正常的任何建议?

并非您迭代的所有控件都可以禁用,因此代码失败。当它尝试在未声明此函数的控件上执行 getDisabled 时会抛出错误。

这可以通过首先检查控件上是否存在必要的函数来解决:

function onLoad() {
    var formType = Xrm.Page.ui.getFormType();

    if (formType == 2)
        makeFieldsReadOnly(); }


function makeFieldsReadOnly() {
    var controls = Xrm.Page.ui.controls.get();
    for (var i in controls) {
        var control = controls[i];
        if (control.getDisabled && control.setDisabled && !control.getDisabled()) {
            control.setDisabled(true);
       }
    } 
}