In this post, we will cover how to get and set values for fields on Microsoft Dynamics 365/CRM forms. Dynamics 365 has the following types of fields (or datatypes): Single Line of Text, Option Set, MultiSelect Option Set, Two Options, Image, Whole Number, Floating Point Number, Floating Point Number, Decimal Number, Currency, Multiple Lines of Text, Date and Time, Lookup and Customer.
At the time of writing, there are two ways of accessing fields on Dynamics 365 forms i.e. using the formContext
JavaScript API and Xrm.Page
JavaScript API. However, Microsoft has the following JavaScript API recommendations:
- Before Dynamics 365/CRM version 9.0, use the Xrm.Page API:
Xrm.Page.getAttribute(fieldName);
- Version 9.0 of Dynamics 365/CRM and after, use the formContext API:
executionContext.getFormContext().getAttribute(fieldName);
With the release of version 9.0 of Dynamics CRM/365, Microsoft announced that it would deprecate the Xrm.Page
JavaScript API. For details on how you can transition from the Xrm.Page
API to the formContext
API, see my earlier post: Quick Guide: Transitioning away from Microsoft Dynamics 365 Xrm.Page JavaScript API. From Xrm.Page
to formContext
, how you get and set values has not fundamentally changed. However, how you access fields and other form properties has changed.
Single Line of Text
Here is an example of a Single Line of Text field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Single Line of Text field (Display Name: “Account Number” | Database Name: “accountnumber”):
//Get and Set a Single Line of Text field value
function SingleLineOfTextFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var accountNumberFieldLogicalName = "accountnumber";
//Access the field on the form
var accountNumberField = formContext.getAttribute(accountNumberFieldLogicalName);
//Declare the other variables as needed
var accountNumberFieldValue;
//Check that field exist on the form before you try to Get/Set its value
if (accountNumberField != null) {
// Get the value of the field
accountNumberFieldValue = accountNumberField.getValue();
// Set the value of the field
accountNumberField.setValue("BYA-2019-AIR-0099");
}
}
Multiple Lines of Text
Here is an example of a Multiple Lines of Text field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Multiple Lines of Text field (Display Name: “Description” | Database Name: “description”):
//Get and Set Multiple Lines of Text field value
function MultipleLineOfTextFieldValue(executionContext) {
debugger;
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var descriptionFieldLogicalName = "description";
// Access the description field on the form
var descriptionField = formContext.getAttribute(descriptionFieldLogicalName);
//Declare the other variables as needed
var descriptionFieldValue;
var exampleText = "\
To be, or not to be, that is the question:\
Whether 'tis nobler in the mind to suffer\
The slings and arrows of outrageous fortune,\
Or to take Arms against a Sea of troubles,\
And by opposing end them: to die, to sleep;\
No more; and by a sleep, to say we end \
The heart - ache, and the thousand natural shocks \
That Flesh is heir to ? 'Tis a consummation \
Devoutly to be wished.To die, to sleep, \
perchance to Dream; aye, there's the rub, \
For in that sleep of death, what dreams may come, \
When we have shuffled off this mortal coil,\
Must give us pause. " ;
//Check that field exist on the form before you try to Get/Set its value
if (descriptionField != null) {
// Get the value of the description field
descriptionFieldValue = descriptionField.getValue();
// Set the value of the description field
descriptionField.setValue(exampleText);
}
}
Whole Number
Here is an example of a Whole Number field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Whole Number field (Display Name: “Number of Employees” | Database Name: “numberofemployees”):
//Get and Set a Whole Number field value
function WholeNumberFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var numberOfEmployeesFieldLogicalName = "numberofemployees";
// Access the field on the form
var numberOfEmployeesField = formContext.getAttribute(numberOfEmployeesFieldLogicalName);
//Declare the other variables as needed
var numberOfEmployeesFieldValue;
//Check that field exist on the form before you try to Get/Set its value
if (numberOfEmployeesField != null) {
// Get the value of the field
numberOfEmployeesFieldValue = numberOfEmployeesField.getValue();
// Set the value of the field
numberOfEmployeesField.setValue(20000);
}
}
Decimal Number
Here is an example of a Decimal Number field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Decimal Number field (Display Name: “Exchange Rate” | Database Name: “exchangerate”):
//Get and Set a Decimal Number field value
function DecimalNumberFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var exchangeRateFieldLogicalName = "exchangerate";
// Access the field on the form
var exchangeRateField = formContext.getAttribute(exchangeRateFieldLogicalName);
//Declare the other variables as needed
var exchangeRateFieldValue;
//Check that field exist on the form before you try to Get/Set its value
if (exchangeRateField != null) {
// Get the value of the field
exchangeRateFieldValue = exchangeRateField.getValue();
// Set the value of the field
exchangeRateField.setValue(1.35551);
}
}
Floating Point Number
Here are some examples of Floating Number fields on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Floating Number field (Display Name: “Address 1: Longitude” | Database Name: “address1_longitude”):
//Get and Set a Floating Point Number field value
function FloatingPointNumberFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var longitudeFieldLogicalName = "address1_longitude";
// Access the field on the form
var longitudeField = formContext.getAttribute(longitudeFieldLogicalName);
//Declare the other variables as needed
var longitudeFieldValue;
//Check that field exist on the form before you try to Get/Set its value
if (longitudeField != null) {
// Get the value of the field
longitudeFieldValue = longitudeField.getValue();
// Set the value of the field
longitudeField.setValue(-79.387054);
}
}
Currency
Here is an example of a Currency field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Currency field (Display Name: “Annual Revenue” | Database Name: “revenue”):
//Get and Set a Currency field value
function CurrencyFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var revenueFieldLogicalName = "revenue";
// Access the field on the form
var revenueField = formContext.getAttribute(revenueFieldLogicalName);
//Declare the other variables as needed
var revenueFieldValue;
//Check that field exist on the form before you try to Get/Set its value
if (revenueField != null) {
// Get the value of the field
revenueFieldValue = revenueField.getValue();
// Set the value of the field
revenueField.setValue(52000000);
}
}
Two Options
Here are some examples of Two Options fields on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Two Options field (Display Name: “Email” | Database Name: “donotemail”):
//Get and Set a Two Options field value
function TwoOptionsFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var dontAllowEmailsFieldLogicalName = "donotemail";
// Access the field on the form
var dontAllowEmailsField = formContext.getAttribute(dontAllowEmailsFieldLogicalName);
//Declare the other variables as needed
var dontAllowEmailsValue;
//Check that field exist on the form before you try to Get/Set its value
if (dontAllowEmailsField != null) {
// Get the value of the field
dontAllowEmailsValue = dontAllowEmailsField.getValue();
// Set the value of the field to TRUE
//dontAllowEmailsField.setValue(true);
// Set the value of the field to FALSE
dontAllowEmailsField.setValue(false);
}
}
Option Set
Here is an example of an Option Set field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of an Option Set field (Display Name: “Contact Method” | Database Name: “preferredcontactmethodcode”):
//Get and Set a Option Set field value
function OptionsetFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var contactMethodFieldLogicalName = "preferredcontactmethodcode";
// Access the field on the form
var contactMethodField = formContext.getAttribute(contactMethodFieldLogicalName);
//Declare the other variables as needed
var contactMethodValue;
//Check that field exist on the form before you try to Get/Set its value
if (contactMethodField != null) {
// Get the value of the field
contactMethodValue = contactMethodField.getValue();
// Set the value of the field to FALSE
contactMethodField.setValue(5);
}
}
MultiSelect Option Set
Here is an example of a MultiSelect Option Set field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the values of a MultiSelect Option Set field (Display Name: “Geographical Areas of Operation” | Database Name: “hse_geographicalareasofoperation”) :
//Get and Set a MultiSelect Option Set field value
function MultiSelectOptionsetFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var locationFieldLogicalName = "hse_geographicalareasofoperation";
// Access the field on the form
var locationField = formContext.getAttribute(locationFieldLogicalName);
//Declare the other variables as needed
var locationValue;
//Check that field exist on the form before you try to Get/Set its value
if (locationField != null) {
// Get the value of the field
locationValue = locationField.getValue();
// Set the value of the field to the desired values
locationField.setValue([864700000, 864700003, 864700005, 864700007]);
}
}
Date and Time
Here are some examples of Date and Time fields on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Date and Time field (Display Name: “Follow Up Date” | Database Name: “hse_followupdate”):
//Get and Set a Date and Time field value
function DateAndTimeFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var createdOnFieldLogicalName = "createdon";
var followUpFieldLogicalName = "hse_followupdate";
// Access the fields on the form
var createdOnField = formContext.getAttribute(createdOnFieldLogicalName);
var followUpField = formContext.getAttribute(followUpFieldLogicalName);
//Declare the other variables as needed
var createdOnFieldValue;
var followUpFieldValue = new Date();
var numberOfDays = 30;
var daysMillisecondsConverter = 24 * 60 * 60 * 1000;
//Check that fields exist on the form before you try to Get/Set its values
if (createdOnField != null && followUpField != null) {
// Get the value of the field
createdOnFieldValue = createdOnField.getValue();
//Before you use the createdOnFieldValue value, verify that it exists
if (createdOnFieldValue != null) {
//Set the follow up date to 30 days after the record was created
followUpFieldValue.setTime(createdOnFieldValue.getTime() + (numberOfDays * daysMillisecondsConverter));
// Set the value of the field
followUpField.setValue(followUpFieldValue);
}
}
}
Lookup
Here is an example of a Lookup field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Lookup field (Display Name: “Account Manager” | Database Name: “hse_accountmanager”) :
//Get and Set a Lookup field value
function LookupFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var accountmanagerLogicalName = "hse_accountmanager";
// Access the field on the form
var accountmanagerField = formContext.getAttribute(accountmanagerLogicalName);
//Declare the other variables as needed
var accountmanagerFieldValue;
var guid;
var name;
var entityName;
//Check that field exist on the form before you try to Get/Set its value
if (accountmanagerField != null) {
// Get the value of the field
accountmanagerFieldValue = accountmanagerField.getValue();
//Check if the field contains a value
if (accountmanagerFieldValue != null) {
//To get the attributes of the field
guid = accountmanagerFieldValue[0].id.slice(1, -1);
name = accountmanagerFieldValue[0].name;
entityName = accountmanagerFieldValue[0].entityType;
}
// Set the value of the field
accountmanagerField.setValue([{
id: "4BDB64C8-AA81-E911-B80C-00155D380105",
name: "Joshua Sinkamba",
entityType: "systemuser"
}]);
//Alternative Approach: Set the value of the field
//var lookupValue = new Array();
//lookupValue[0] = new Object();
//lookupValue[0].id = "4BDB64C8-AA81-E911-B80C-00155D380105";
//lookupValue[0].name = "Joshua Sinkamba";
//lookupValue[0].entityType = "systemuser";
//accountmanagerField.setValue(lookupValue);
}
}
Customer
Here is an example of a Customer field on a Dynamics 365 form:
Here is the JavaScript for getting and setting the value of a Customer field (Display Name: “Main Customer” | Database Name: “hse_maincustomer”):
//Get and Set a Customer field value
function CustomerFieldValue(executionContext) {
//Get the context of the form
var formContext = executionContext.getFormContext();
//The logical name of the field of interest
var mainCustomerLogicalName = "hse_maincustomer";
// Access the field on the form
var mainCustomerField = formContext.getAttribute(mainCustomerLogicalName);
//Declare the other variables as needed
var mainCustomerFieldValue;
var guid;
var name;
var entityName;
//Check that field exist on the form before you try to Get/Set its value
if (mainCustomerField != null) {
// Get the value of the field
mainCustomerFieldValue = mainCustomerField.getValue();
//Check if the field contains a value
if (mainCustomerFieldValue != null) {
//To get the attributes of the field
guid = mainCustomerFieldValue[0].id.slice(1, -1);
name = mainCustomerFieldValue[0].name;
entityName = mainCustomerFieldValue[0].entityType;
}
// Set the value of the field
mainCustomerField.setValue([{
id: "EE047399-CDE0-E911-B817-00155D380105",
name: "Avanade",
entityType: "account"
}]);
//Alternative Approach: Set the value of the field
//var customerValue = new Array();
//customerValue[0] = new Object();
//customerValue[0].id = "EE047399-CDE0-E911-B817-00155D380105";
//customerValue[0].name = "Avanade";
//customerValue[0].entityType = "account";
//mainCustomerField.setValue(customerValue);
}
}