1. Get the GUID value of a lookup field:
function AlertGUID() {
var primaryContactGUID = Xrm.Page.data.entity.attributes.get("primarycontactid").getValue()[0].id;
alert(primaryContactGUID);
}
2. Get the Text value of a lookup field:
function AlertText() {
var primaryContactName = Xrm.Page.data.entity.attributes.get("primarycontactid").getValue()[0].name;
alert(primaryContactName);
}
3. Get the value of a text field:
function AlertTextField() {
var MainPhone = Xrm.Page.data.entity.attributes.get("telephone1").getValue();
alert(MainPhone);
}
4. Get the value of an Option Set field:
function AlertOptionSetDatabaseValue() {
var AddressTypeDBValue = Xrm.Page.data.entity.attributes.get("address1_addresstypecode").getValue();
if (AddressTypeDBValue != null) {
alert(AddressTypeDBValue);
}
}
5. Get the text value of an Option Set field:
function AlertOptionSetDisplayValue() {
var AddressTypeDisplayValue = Xrm.Page.data.entity.attributes.get("address1_addresstypecode").getText();
if (AddressTypeDisplayValue != null) {
alert(AddressTypeDisplayValue);
}
}
6. Get the value of a Bit field:
function GetBitValue(fieldname) {
return Xrm.Page.data.entity.attributes.get(fieldname).getValue();
}
7. Get the value of a Date field:\
returns a value like: Wed Nov 30 17:04:06 UTC+0800 2011
and reflects the users time zone set under personal options
function GetDate(fieldname) {
return Xrm.Page.data.entity.attributes.get(fieldname).getValue();
}
8. Get the day, month and year parts from a Date field:
// This function takes the fieldname of a date field as input and returns a DD-MM-YYYY value
// Note: the day, month and year variables are numbers
function FormatDate(fieldname) {
var d = Xrm.Page.data.entity.attributes.get(fieldname).getValue();
if (d != null) {
var curr_date = d.getDate();
var curr_month = d.getMonth();
curr_month++; // getMonth() considers Jan month 0, need to add 1
var curr_year = d.getFullYear();
return curr_date + "-" + curr_month + "-" + curr_year;
}
else return null;
}
// An example where the above function is called
alert(FormatDate("new_date2"));
9. Set the value of a string field:
function SetStringField() {
var Name = Xrm.Page.data.entity.attributes.get("name");
Name.setValue("ABC");
}
10. Set the value of an Option Set (pick list) field:
Note: this example sets the Address Type field on the Account Form to “Bill To”, which corresponds to a database value of “1”
function SetOptionSetField() {
var AddressType = Xrm.Page.data.entity.attributes.get("address1_addresstypecode");
AddressType.setValue(1);
}
11. Set a Date field / Default a Date field to Today:
//set date field to now (works on date and date time fields)
Xrm.Page.data.entity.attributes.get("new_date1").setValue(new Date());
12. Set a Date field to 7 days from now:
function SetDateField() {
var today = new Date();
var futureDate = new Date(today.setDate(today.getDate() + 7));
Xrm.Page.data.entity.attributes.get("new_date2").setValue(futureDate);
Xrm.Page.data.entity.attributes.get("new_date2").setSubmitMode("always"); // Save the Disabled Field
}
13. Set the Time portion of a Date Field:
// This is a function you can call to set the time portion of a date field
function SetTime(attributeName, hour, minute) {
var attribute = Xrm.Page.getAttribute(attributeName);
if (attribute.getValue() == null) {
attribute.setValue(new Date());
}
attribute.setValue(attribute.getValue().setHours(hour, minute, 0));
}
// Here's an example where I use the function to default the time to 8:30am
SetTime('new_date2', 8, 30);
14. Set the value of a Lookup field:
// Set the value of a lookup field
function SetLookupValue(fieldName, id, name, entityType) {
if (fieldName != null) {
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = id;
lookupValue[0].name = name;
lookupValue[0].entityType = entityType;
Xrm.Page.getAttribute(fieldName).setValue(lookupValue);
}
}
Here’s an example of how to call the function (I retrieve the details of one lookup field and then call the above function to populate another lookup field):
var ExistingCase = Xrm.Page.data.entity.attributes.get("new_existingcase");
if (ExistingCase.getValue() != null) {
var ExistingCaseGUID = ExistingCase.getValue()[0].id;
var ExistingCaseName = ExistingCase.getValue()[0].name;
SetLookupValue("regardingobjectid", ExistingCaseGUID, ExistingCaseName, "incident");
}
16. Set the Requirement Level of a Field:
Note: setRequiredLevel(“none”) would make the field optional again.
function SetRequirementLevel() {
var AddressType = Xrm.Page.data.entity.attributes.get("address1_addresstypecode");
AddressType.setRequiredLevel("required");
}
17. Disable a field:
function SetEnabledState() {
var AddressType = Xrm.Page.ui.controls.get("address1_addresstypecode");
AddressType.setDisabled(true);
}
18. Force Submit the Save of a Disabled Field:
// Save the Disabled Field
Xrm.Page.data.entity.attributes.get("new_date1").setSubmitMode("always");
19. Show/Hide a field:
function hideName() {
var name = Xrm.Page.ui.controls.get("name");
name.setVisible(false);
}
20. Show/Hide a field based on a Bit field
function DisableExistingCustomerLookup() {
var ExistingCustomerBit = Xrm.Page.data.entity.attributes.get("new_existingcustomer").getValue();
if (ExistingCustomerBit == false) {
Xrm.Page.ui.controls.get("customerid").setVisible(false);
}
else {
Xrm.Page.ui.controls.get("customerid").setVisible(true);
}
}
21. Show/Hide a nav item:
Note: you need to refer to the nav id of the link, use F12 developer tools in IE to determine this
function hideContacts() {
var objNavItem = Xrm.Page.ui.navigation.items.get("navContacts");
objNavItem.setVisible(false);
}
22. Show/Hide a Section:
Note: Here I provide a function you can use. Below the function is a sample.
function HideShowSection(tabName, sectionName, visible) {
try {
Xrm.Page.ui.tabs.get(tabName).sections.get(sectionName).setVisible(visible);
}
catch (err) { }
}
HideShowSection("general", "address", false); // "false" = invisible
23. Show/Hide a Tab:
Note: Here I provide a function you can use. Below the function is a sample.
function HideShowTab(tabName, visible) {
try {
Xrm.Page.ui.tabs.get(tabName).setVisible(visible);
}
catch (err) { }
}
HideShowTab("general", false); // "false" = invisible
24. Save the form:
function SaveAndClose() {
Xrm.Page.data.entity.save();
}
25. Save and close the form:
function SaveAndClose() {
Xrm.Page.data.entity.save("saveandclose");
}
26. Close the form:
Note: the user will be prompted for confirmation if unsaved changes exist
function Close() {
Xrm.Page.ui.close();
}
27. Determine which fields on the form are dirty:
var attributes = Xrm.Page.data.entity.attributes.get()
for (var i in attributes)
{
var attribute = attributes[i];
if (attribute.getIsDirty())
{
alert("attribute dirty: " + attribute.getName());
}
}
28. Determine the Form Type:
Note: Form type codes: Create (1), Update (2), Read Only (3), Disabled (4), Bulk Edit (6)
function AlertFormType() {
var FormType = Xrm.Page.ui.getFormType();
if (FormType != null) {
alert(FormType);
}
}
29. Get the GUID of the current record:
function AlertGUID() {
var GUIDvalue = Xrm.Page.data.entity.getId();
if (GUIDvalue != null) {
alert(GUIDvalue);
}
}
30. Get the GUID of the current user:
function AlertGUIDofCurrentUser() {
var UserGUID = Xrm.Page.context.getUserId();
if (UserGUID != null) {
alert(UserGUID);
}
}
31. Get the Security Roles of the current user:
(returns an array of GUIDs, note: my example reveals the first value in the array only)
function AlertRoles() {
alert(Xrm.Page.context.getUserRoles());
}
32. Determine the CRM server URL:
// Get the CRM URL
var serverUrl = Xrm.Page.context.getServerUrl();
// Cater for URL differences between on premise and online
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
33. Refresh a Sub-Grid:
var targetgird = Xrm.Page.ui.controls.get("target_grid");
targetgird.refresh();
35. Pop an existing CRM record (new approach):
function PopContact() {
//get PrimaryContact GUID
var primaryContactGUID = Xrm.Page.data.entity.attributes.get("primarycontactid").getValue()[0].id;
if (primaryContactGUID != null) {
//open Contact form
Xrm.Utility.openEntityForm("contact", primaryContactGUID)
}
}
36. Pop an existing CRM record (old approach):
Note: this example pops an existing Case record. The GUID of the record has already been established and is stored in the variable IncidentId.
//Set features for how the window will appear
var features = "location=no,menubar=no,status=no,toolbar=no";
// Get the CRM URL
var serverUrl = Xrm.Page.context.getServerUrl();
// Cater for URL differences between on premise and online
if (serverUrl.match(/\/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
window.open(serverUrl + "/main.aspx?etn=incident&pagetype=entityrecord&id=" + encodeURIComponent(IncidentId), "_blank", features, false);
37. Pop a blank CRM form (new approach):
function PopNewCase() {
Xrm.Utility.openEntityForm("incident")
}
38. Pop a new CRM record with default values (new approach):
function CreateIncident() {
//get Account GUID and Name
var AccountGUID = Xrm.Page.data.entity.getId();
var AccountName = Xrm.Page.data.entity.attributes.get("name").getValue();
//define default values for new Incident record
var parameters = {};
parameters["title"] = "New customer support request";
parameters["casetypecode"] = "3";
parameters["customerid"] = AccountGUID;
parameters["customeridname"] = AccountName;
parameters["customeridtype"] = "account";
//pop incident form with default values
Xrm.Utility.openEntityForm("incident", null, parameters);
}
40. Pop a Dialog from a ribbon button
Note: this example has the Dialog GUID and CRM Server URL hardcoded, which you should avoid. A simple function is included which centres the Dialog when launched.
function LaunchDialog(sLeadID) {
var DialogGUID = "128CEEDC-2763-4FA9-AB89-35BBB7D5517D";
var serverUrl = "https://avanademarchdemo.crm5.dynamics.com/";
serverUrl = serverUrl + "cs/dialog/rundialog.aspx?DialogId=" + "{" + DialogGUID + "}" + "&EntityName=lead&ObjectId=" + sLeadID;
PopupCenter(serverUrl, "mywindow", 400, 400);
window.location.reload(true);
}
function PopupCenter(pageURL, title, w, h) {
var left = (screen.width / 2) - (w / 2);
var top = (screen.height / 2) - (h / 2);
var targetWin = window.showModalDialog(pageURL, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
}
41. Pop a URL from a ribbon button
Great info on the window parameters you can set here: http://javascript-array.com/scripts/window_open/
function LaunchSite() {
// read URL from CRM field
var SiteURL = Xrm.Page.data.entity.attributes.get("new_sharepointurl").getValue();
// execute function to launch the URL
LaunchFullScreen(SiteURL);
}
function LaunchFullScreen(url) {
// set the window parameters
params = 'width='+screen.width;
params += ', height='+screen.height;
params += ', top=0, left=0';
params += ', fullscreen=yes';
params += ', resizable=yes';
params += ', scrollbars=yes';
params += ', location=yes';
newwin=window.open(url,'windowname4', params);
if (window.focus) {
newwin.focus()
}
return false;
}
42. Pop the lookup window associated to a Lookup field:
window.document.getElementById('new_existingcase').click();
43. Pop a Web Resource (new approach):
function PopWebResource() {
Xrm.Utility.openWebResource("new_Hello");
}
44. Using a SWITCH statement
function GetFormType() {
var FormType = Xrm.Page.ui.getFormType();
if (FormType != null) {
switch (FormType) {
case 1:
return "create";
break;
case 2:
return "update";
break;
case 3:
return "readonly";
break;
case 4:
return "disabled";
break;
case 6:
return "bulkedit";
break;
default:
return null;
}
}
}
45. Pop an Ok/Cancel Dialog
function SetApproval() {
if (confirm("Are you sure?")) {
// Actions to perform when 'Ok' is selected:
var Approval = Xrm.Page.data.entity.attributes.get("new_phaseapproval");
Approval.setValue(1);
alert("Approval has been granted - click Ok to update CRM");
Xrm.Page.data.entity.save();
}
else {
// Actions to perform when 'Cancel' is selected:
alert("Action cancelled");
}
}