Back to Basics # 63: Make All Form Fields as Read-only with Webresource in Dynamics CRM

Introduction:

During certain scenarios we must make all CRM form fields as read-only. To achieve this functionality explicit logic should be written using JavaScript with form controls that are available on the form. Contact form was used to show this functionality.

Step 1:

Login to the required environment and select required solution [Contact Customizations Solution in this case] as shown in the   below figure.

Step 2:

After Step 1, select contact web resource in solution and click on Edit as shown in the below figure.

Step 3:

After Step 2, use below code to get all form controls present on a form

‘use strict’;

var formControls = formContext.getControl();

As shown in the below figure

Step 4:

After Step 3,  loop through formControls variable and make each control as readonly by using setDisabled property as true by using below code

formControls.forEach(control => {

                control.setDisabled(true);

            });

And as shown in the below figure.

Step 5:

After Step 4, include code present in Step 3 and Step 4 inside a function and below is the code

function  disableformcontrols(executionContext)

{

    ‘use strict’;

    let formContext = executionContext.getFormContext();

    if (formContext !== null && formContext != ‘undefined’)

    {

        var formControls = formContext.getControl();

            formControls.forEach(control => {

                control.setDisabled(true);

            });

    }

}

Step 6:

After Step 5, call function from respective event in this case from handleOnLoad function and the final code looks like below

if (typeof (ContosoVaccination) == “undefined”)

{

    var ContosoVaccination = {__namespace: true};

}

if (typeof (ContosoVaccination.Scripts) == “undefined”)

{

    ContosoVaccination.Scripts = {__namespace: true};

}

ContosoVaccination.Scripts.ContactForm =

{

    handleOnLoad: function (executionContext)

        {

        console.log(‘on load – contact form’);

        disableformcontrols(executionContext);

        },

    __namespace: true

}

 function  disableformcontrols(executionContext)

{

    ‘use strict’;

    let formContext = executionContext.getFormContext();

    if (formContext !== null && formContext != ‘undefined’)

    {

        var formControls = formContext.getControl();

            formControls.forEach(control => {

                control.setDisabled(true);

            });

    }

}

Step 7:

After Step 6, save function and update Webresource with this file and publish it on the contact form and open any contact and observe all fields as readonly as shown in the below figure

Note:

  1. Make sure to publish all customizations and upload JavaScript (js) file.

Conclusion: In this way, one can easily make all fields present on a crm form as readonly with javascript as webresource.

One thought on “Back to Basics # 63: Make All Form Fields as Read-only with Webresource in Dynamics CRM

  1. Pingback: Back To Basics : Curated List of Articles in a Single Page – Common Man Tips for Power Platform, Dynamics CRM,Azure

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s