Hi folks,
Today, I found a new bug in CRM.
Context
I have a form with two sections. Under some circumstances, I show one and hide the other. That part is working. In both of those sections, I have a field called xrm_field. Again, under some circumstances, I want to disable that field doing the followning:
Xrm.Page.getControl(‘xrm_field’).setDisabled(true);
While testing my code, I discovered that when the second section is hidden, the field is disabled, but when the first section is hidden, the same field is not. Therefore, I made sure that nowhere in my code I was enabling/disabling it again.
The problem
To understand why this is happening, I dug into MSCRM javascript. What I found out made me shudder. In a list of all the controls, I saw this:
- xrm_field
- xrm_field1
So I added:
Xrm.Page.getControl(‘xrm_field1’).setDisabled(true);
and it worked!
Conclusion
Against all odds, the MVC pattern that is working with the attributes, is not with the controls.
So, until this is fixed, we’ll have to remember to set the “other” control too.
Hope this helps!