Sample JavaScripts for Dynamics 365 CE or DataVerse Power APps
Dynamically Add event handlers in Dynamics 365 Form Scripts.
//Using namespace in JavaScript Code var MyJS = MyJS || {}; MyJS.GetCustomer = function (firstname, lastname) { }; MyJS.GetRecordInfo = function () { }; // Code to run in the form OnLoad event MyJS.formOnLoad = function (executionContext) { var formContext = executionContext.getFormContext(); // Code to run in the column OnChange event MyJS.attributeOnChange = function (executionContext) { var formContext = executionContext.getFormContext(); } // Code to run in the form OnSave event MyJS.formOnSave = function (executionContext) { var formContext = executionContext.getFormContext(); } } // get lookup var customer = formContext.getAttribute("customerid").getValue(); var customerEntityType = customer[0].entityType; var customerId = customer[0].id; var customerName = customer[0].name; //getvalue var title = formContext.getAttribute("fieldname").getValue(); // Get choice text var casetype=formContext.getAttribute("fieldname").getText(); //set value // Set lookup value var lookupValue = new Array(); lookupValue[0] = new Object(); lookupValue[0].id = "e4436b-4cd6-ec11-a7b5-000d3a9c27d2"; lookupValue[0].entityType = "contact"; lookupValue[0].name = "Test name"; formContext.getAttribute("customerid").setValue(lookupValue); // Set choices values formContext.getAttribute("degree").setValue([100000000,100000001]); // Set text value formContext.getAttribute("textfield").setValue("Those are the steps"); // Set number value formContext.getAttribute("numberfield").setValue(100); //Get current row data var currentRow = formContext.data.entity.getEntityReference(); var currentRowEntityType = currentRow.entityType; var currentRowId = currentRow.id; var currentRowId2 = currentRow.id.replace(/{|}/g, ''); var currentRowName = currentRow.name; //Read value from related record Xrm.WebApi.retrieveRecord("contact", customerId, "?$select=firstname&$expand=modifiedby($select=fullname;$expand=businessu nitid($select=name))").then( function success(result) { console.log("Name: " + result.modifiedby.fullname); // perform operations on record retrieval }, function (error) { console.log(error.message); // handle error conditions } ); //show hide field formContext.getControl("caseorigincode").setVisible(true); formContext.getControl("caseorigincode").setVisible(false); //show hide section // Show section within a specified tab var tab = formContext.ui.tabs.get("Summary"); var section = tab.sections.get("Timeline"); section.setVisible(true); // Hide section within a specified tab var tab = formContext.ui.tabs.get("Summary"); var section = tab.sections.get("Timeline"); section.setVisible(false); //show hide tabs // Show tab var tab = formContext.ui.tabs.get("Details"); tab.setVisible(true); // Hide tab var tab = formContext.ui.tabs.get("Details"); tab.setVisible(false); //set required field formContext.getAttribute("fieldname").setRequiredLevel("required"); // Set field as recommended formContext.getAttribute("fieldname").setRequiredLevel("recommended"); // Set field as optional formContext.getAttribute("fieldname").setRequiredLevel("none"); //set readonly // Set field read-only formContext.getControl("caseorigincode").setDisabled(true); // Set field editable formContext.getControl("caseorigincode").setDisabled(false); //set all fields in a section readonly disableSection = function(formContext, tab, section) { var section = formContext.ui.tabs.get(tab).sections.get(section); var controls = section.controls.get(); var controlsLenght = controls.length; for (var i = 0; i < controlsLenght; i++) { controls[i].setDisabled(true); } } // call the function to disable all the fields in the section disableSection(formContext,"Summary","Case Details Summary"); //set all fields in a tab readonly this.disableTab = function(formContext, tab) { formContext.ui.tabs.get(tab).sections.forEach(function (section){ section.controls.forEach(function (control) { control.setDisabled(true); }) }); } // call the function to disable all the fields in the section disableTab(formContext,"Summary"); //bpf fields in JS // Add "header process_" to the field name // Set field as required formContext.getAttribute("header_process_fieldname").setRequiredLevel("re quired"); // Set field read-only formContext.getControl("header_process_fieldname").setDisabled(true); //refresh and save form // Save and refresh the form formContext.data.refresh(true); // Refresh the form (without saving) formContext.data.refresh(false); //alert dialog and confirm dialog // alert dialog var alertStrings = { confirmButtonLabel: "Yes", text: "This is an alert.", title: "Sample title" }; var alertOptions = { height: 120, width: 260 }; Xrm.Navigation.openAlertDialog(alertStrings, alertOptions).then( function (success) { console.log("Alert dialog closed"); }, function (error) { console.log(error.message); } ); // confirm dialog var confirmStrings = { text:"This is a confirmation.", title:"Confirmation Dialog" }; var confirmOptions = { height: 200, width: 450 }; Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then( function (success) { if (success.confirmed) console.log("Dialog closed using OK button."); else console.log("Dialog closed using Cancel button or X."); }); // Set field read-only formContext.getControl("iframe").setSrc("https://softchief.com"); //create record // define the data to create new account var data = { "name": "Sample Account", "creditonhold": false, "address1_latitude": 47.639583, "description": "This is the description of the sample account", "revenue": 5000000, "accountcategorycode": 1 } // create account record Xrm.WebApi.createRecord("account", data).then( function success(result) { console.log("Account created with ID: " + result.id); // perform operations on record creation }, function (error) { console.log(error.message); // handle error conditions } ); //update record // define the data to update a record var data = { "name": "Updated Sample Account ", "creditonhold": true, "address1_latitude": 47.639583, "description": "This is the updated description of the sample account", "revenue": 6000000, "accountcategorycode": 2 } // update the record Xrm.WebApi.updateRecord("account", "5531d753-95af-e711-a94e-000d3a11e605", data).then( function success(result) { console.log("Account updated"); // perform operations on record update }, function (error) { console.log(error.message); // handle error conditions } ); //delete record Xrm.WebApi.deleteRecord("account", "5531d753-95af-e711-a94e-000d3a11e605").then( function success(result) { console.log("Account deleted"); // perform operations on record deletion }, function (error) { console.log(error.message); // handle error conditions } );
Take a look of all code : https://docs.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference/xrm-webapi
https://docs.microsoft.com/en-us/power-apps/developer/model-driven-apps/clientapi/reference
Hope this helps