MS CRM 2013 introduced new approach to dialogs opened inside the system. In version 2011 look-ups were opened as separate (modal) windows, but in 2013 look-ups are opened as inline iframes on current page.
Definitely it's possible via following jQuery statements:
$('body').append("<div id='InlineDialog_Background' class='ms-crm-InlineDialogBackground' tabindex='0' style='position: absolute; width: 100%; height: 100%; top: 0px; background-color: rgb(128, 128, 128); z-index: 1005; opacity: 0.5;'></div>");
$('body').append("<div id='InlineDialog' class='ms-crm-DialogChrome' tabindex='1' style='position: absolute; top: 50%; left: 50%; z-index: 1006; margin-top: -240px; margin-left: -400px; height: 540px; width: 800px;'><iframe id='InlineDialog_Iframe' name='InlineDialog_Iframe' src='custom_url' style='height: 540px; width: 800px; border: 0px;'></iframe><div id='DialogLoadingDiv' style='position: absolute; background-color: white; height: 480px; width: 800px; top: 50%; left: 50%; margin-top: -240px; margin-left: -400px; z-index: 1007; display: none;'><table class='ms-crm-LoadingContainer' style='width:100%;height:100%'><tbody><tr class='ms-crm-LoadingContainer'><td style='vertical-align: middle' align='center'><img id='DialogLoadingDivImg' alt='' src='/_imgs/AdvFind/progress.gif'><br>Loading...</td></tr></tbody></table></div></div>");
But it also requires some additional routines to close such dialog properly.
Is there any Microsoft-provided javascript methods to open such a iframe
?
Here is the example of displaying web resource in such dialog box.
In the parent window:
var src = <Relative_Url_of_the_Webresource>;
var DialogOptions = new Xrm.DialogOptions();
DialogOptions.width = 500;
DialogOptions.height = 400;
Xrm.Internal.openDialog(src, DialogOptions, null, null, CallbackFunction);
function CallbackFunction(returnValue){ }
Also, you have to include ClientGlobalContext.js.aspx in your web resource, for example:
<script type="text/javascript" src="/webresources/ClientGlobalContext.js.aspx"></script>
For passing the return value from the dialog box to the parent window:
Mscrm.Utilities.setReturnValue(result);
try {
closeWindow(true); //Close the dialog box
}
catch (e) { }
Of course this is unsupported and methods are not documented but you can try to use following approach - http://a33ik.blogspot.com/2014/05/show-your-dialog-in-crm-2013-modal-style.html
Here is the code:
if (typeof Custom == "undefined") {
Custom = {
OpenDialog: function (webresource) {
var $v_0 = new Mscrm.CrmDialog(Mscrm.CrmUri.create(webresource), window, 370, 370, null);
$v_0.show();
},
__namespace: true
};
}
Sample of usage:
Custom.OpenDialog("/webresources/new_webresource.htm");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With