CRM Javascript如何在表单标题上禁用字段

时间:2018-07-19 19:44:46

标签: javascript dynamics-crm dynamics-crm-2016

我们正在使用CRM 2016,我要求在满足特定条件时禁用“联系人”表单上的所有字段。这是我使用的代码

var attributes = Xrm.Page.data.entity.attributes.get();
for (var i in attributes) {
    var myattribute = Xrm.Page.data.entity.attributes.get(attributes[i].getName());
    var myname = myattribute.getName();
    if (Xrm.Page.getControl(myname) != null) {
        //alert(myname);
        Xrm.Page.getControl(myname).setDisabled(true);
    }
}

除了某些原因,我无法访问标题上的字段,因此代码可以正常工作。 getControl总是以某种方式为标头字段返回null。页眉上的所有字段均未锁定,但页脚本身默认情况下处于锁定状态,我无法对其进行解锁。

是否可以禁用CRM表单中的标题字段?我是否需要找到一种方法来解锁表单上的标题?我尝试使用以下代码禁用该字段本身,但是没有运气。

Xrm.Page.getControl("mycustomfield").setDisabled(true);

4 个答案:

答案 0 :(得分:3)

我必须在字段名称中添加“ header_”以使其起作用

Xrm.Page.getControl("header_mycustomfield").setDisabled(true);

答案 1 :(得分:0)

就像在另一个SO thread中回答的那样,您可以一次性禁用标题中的所有控件,而无需对名称进行硬编码。

要优化您的代码以完全禁用表单控件,请使用以下代码:

Xrm.Page.ui.controls.forEach(function (control) {
            if (control.setDisabled) {
                control.setDisabled(false);
            }
        });

答案 2 :(得分:0)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then
        Target.Copy Target.Offset(, 1) 'copied to B
    End If
End Sub

答案 3 :(得分:0)

使用 formContext 你也可以禁用它。

 if (formContext.getControl("accountid").getAttribute()!= null)  
     formContext.getControl("accountid").setDisabled(true);