如何解决.setDisabled不是crm中的函数

时间:2018-01-11 09:53:58

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

我使用Dynamics crm 2016,在我的代码中我将字段禁用模式从true更改为false,当我的函数将所有字段更改为disable-true时它工作正常但是当我想将其更改回false时(解锁所有字段)我收到此错误:

"xrm.Page.getAttribute(...).setDisabled is not a function"

我尝试了不同的选项,但都返回相同的结果 这是我的代码:

// WORKS

function disableAllFields() {
        Xrm.Page.ui.controls.forEach(function (control, i) {
            if (control && control.getDisabled && !control.getDisabled()) {
                control.setDisabled(true);
            }
        });       
    }

//没有工作 - 得到错误

function unDisableAllFields() {                      
        Xrm.Page.ui.controls.forEach(function (control, i) {
            if(control && control.getDisabled && !control.getDisabled()) {
                control.setDisabled(false);
            }
        });
    }

2 个答案:

答案 0 :(得分:1)

function unDisableAllFields() {                      
  Xrm.Page.ui.controls.forEach(function (control, i) {
    if(control && control.getDisabled) {
      control.setDisabled(false);
    }
  });
} 

问题是!control.getDisabled()。摆脱它&现在它工作正常

答案 1 :(得分:0)

有一个属性和控件的概念可以理解。与MVC相比:

  • 属性是对模型的引用。
  • 控件是对视图中控件的引用。
  • 字段具有一个属性,并且可以具有多个控件。如果名称在表格的3个部分中:
    • Xrm.Page.getAttribute('name')
    • Xrm.Page.getControl('name')
    • Xrm.Page.getControl('name1')
    • Xrm.Page.getControl('name2')

调用setDisable时,必须在控件上完成,因为属性没有视觉上的表现。