We had a requirement to lock CRM 2013 form on some condition and it should appear locked.We implemented following code to achieve
the same.(Mix of supported and unsupported scripting)
Below are functions to lock field:
function disableFields(flag) {
Xrm.Page.ui.controls.forEach(function (control, index) {
if (doesControlHaveAttribute(control)) {
control.setDisabled(flag);
}
});
}
function doesControlHaveAttribute(control) {
var controlType = control.getControlType();
return controlType != “iframe” && controlType != “webresource” && controlType != “subgrid”;
}
Function needs to be called as below to disable form:
//Code to disable fields
disableFields(true);
$(“#footer_statecode”).find(“span”).each(
function () {
var sval = $(this).text();
if (sval == ‘Open’) {
$(this).text(“Locked”);
}
}
);
$(“#savefooter_statuscontrol”).hide();
This will disable CRM 2013 form like mentioned below:
Notice in the above image that there is a lock panel visible below the form.
Following code to enable form fields back:
//Code to enable fields
disableFields(false);
$(“#footer_statecode”).find(“span”).each(
function () {
var sval = $(this).text();
if (sval == ‘Locked’) {
$(this).text(“Open”);
}
}
);
$(“#savefooter_statuscontrol”).show();
Hope it helps!
Helpful code……..Thanks