Hello everyone,
Dynamics 365 v9.0 has introduced Xrm.Navigation namespace under Xrm object. It has a mix of new methods and old methods moved from Xrm.Utility.
Following is the list:
Dynamics 365 v9.0 | Comments |
openAlertDialog | Deprecated Method: Xrm.Utility.alertDialog |
openConfirmDialog | Deprecated Method: Xrm.Utility.confirmDialog |
openErrorDialog | Introduced in v9.0 |
openFile | Introduced in v9.0 |
openForm | Deprecated Methods: Xrm.Utility.openEntityForm Xrm.Utility.openQuickCreate |
openUrl | Introduced in v9.0 |
openWebResource | Deprecated Method: |
In this blog post, I would like to discuss about the new features added in openAlertDialog and openConfirmDialog methods.
Prior to v9.0:
Syntax:
Xrm.Utility.confirmDialog(message,yesCloseCallback,noCloseCallback) Xrm.Utility.alertDialog(message,onCloseCallback)
Sample Code:
Xrm.Utility.confirmDialog("Are you sure you want to approve this request?", //Confirm Dialog Success Callback function () { Xrm.Utility.alertDialog("Request Approved Successfully", //Alert Dialog Ok Button Callback function () { // }); }, //Confirm Dialog Close Callback function () { Xrm.Utility.alertDialog("Request Aborted", //Alert Dialog Ok Button Callback function () { // }); });
Result:
v9.0:
Syntax:
Xrm.Navigation.openConfirmDialog(confirmStrings,confirmOptions).then(successCallback,errorCallback); Xrm.Navigation.openAlertDialog(alertStrings,alertOptions).then(closeCallback,errorCallback);
Following is the rewritten code for v9.0 for showing confirm and alert dialogs using openConfirmDialog and openAlertDialog methods:
function ApproveRequest() { var confirmStrings = { title: "Approval Request", text: "Are you sure you want to approve this request?", subtitle: "This action will approve the request", confirmButtonLabel: "Approve", cancelButtonLabel: "Cancel" }; var confirmOptions = { height: 200, width: 450 }; //New v9.0 Method Xrm.Navigation.openConfirmDialog(confirmStrings, confirmOptions).then(successCallback, errorCallback); } function successCallback(success) { //On Click on Approve Button if (success.confirmed) { //Here Logic to Approve the Request // var alertStrings = { confirmButtonLabel: "Got it..!!", text: "Request Approved Successfully" }; var alertOptions = { height: 120, width: 260 }; //New v9.0 Method Xrm.Navigation.openAlertDialog(alertStrings, alertOptions); } else { var alertStrings = { confirmButtonLabel: "Got it..!!", text: "Request Cancelled" }; var alertOptions = { height: 120, width: 260 }; //New v9.0 Method Xrm.Navigation.openAlertDialog(alertStrings, alertOptions); } } function errorCallback(fail) { //On Error Logic }
Result:
openConfirmDialog:
Here are the improvements added in V 9.0:
- Better UI
- Ability to specify labels for confirm and cancel buttons
- In addition to text in the dialog title and subtitle can be added
- Add dialog window height and width in pixels
Note: successCallback gets called for both Confirm and Cancel Buttons. Esc and x button click as well mimics Cancel Button click. Here is how we can differentiate Confirm and Cancel button the events:
function successCallback(success) {
//success.confirmed = true for Confirm Button Click
if (success.confirmed) {
//Confirm Button Click Event Handler
}
else {
//Cancel Button Click Event Handler
}
openAlertDialog:
Here are the improvements added in V 9.0:
- Better UI
- Ability to specify labels for confirm button
- Add dialog window height and width in pixels
When you are upgrading to Dynamics 365 v9.0, plan to rewrite code to include these new methods.
Hope it helps..!!
I believe I am not wrong, but its one of the bug of Microsoft . If I want to escape from process still it select default value as second option (Cancel option), even if I when click on cross button still it select cancel option.
Actually I want Approve and reject with escape option as well. Can you please help me to sort out this issue ?
Hi,
The openConfirmDialog() runs asynchronously. When there is a plugin on update of an entity and we use this function to show a relevant message and restrict the save of a record when clicked on ‘Cancel’ it fails as the form save has already happened due to async feature. Is there a way to run this in synchronous mode (wait till either ‘OK’ or ‘Cancel’ button has been clicked).
Thanks.
Hi,
I don’t get access of primarycontrol / formcontext in call back function of confirndailog box even by passing extra parameter.