Dynamics CRM Javascript使表单只读--TypeError:control.getDisabled不是函数

KCo*_*deR 0 javascript microsoft-dynamics dynamics-crm-2011

尝试使价格表格和价格项目形式只读并使用下面的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);
       }
    } }
Run Code Online (Sandbox Code Playgroud)

有关为何可能失败的任何建议,在CRM 2011中运行良好吗?

小智 6

并非所有正在迭代的控件都被禁用,因此代码失败.当它尝试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);
       }
    } 
}
Run Code Online (Sandbox Code Playgroud)