XRM SetDisable每次都不起作用

时间:2015-11-26 10:28:59

标签: javascript field dynamics-crm

我正在使用CRM,我需要使用javascript锁定表单中的所有字段(大约300个)。

我使用这个功能:

var allAttributes = Xrm.Page.data.entity.attributes.get();
for (var i in allAttributes) {
    var myattribute = Xrm.Page.data.entity.attributes.get(allAttributes[i].getName());
    if (myattribute != null && myattribute != undefined && myattribute != '') {

        var myname = myattribute.getName();
        var myControl = Xrm.Page.getControl(myname);
        if (myControl != null && myControl != undefined && myControl != '')
            myControl.setDisabled(true);
    }
}

对于大多数人来说,它很有效,但有些字段仍然可以在我的表单中编辑。 我在Chrome中逐步调试它,看起来,在我的函数之后未锁定的字段上,我执行了“myControl.getDisabled()”,并将其设置为true。但是该字段不会锁定在表单上。

这些字段上没有运行任何其他javascript。我试图将函数调用延迟10秒(使用setTimeout),没有任何改变。

知道如何锁定每个字段吗?

1 个答案:

答案 0 :(得分:0)

我认为你的功能可以重构为:

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

尝试使用此重构,如果在此之后它不起作用,请为您正在工作的实体命名,并且字段未锁定。