将参数传递给 Mscrm.CrmDialog
Pass parameters to Mscrm.CrmDialog
我使用 Mscrm.CrmDialog 在 MS Dynamics CRM 2013 中显示一个带有网络资源的新对话框。此方法的优点是此对话框在 Firefox、Chrome 等中也有效 window.showModalDialog 不是因为它已被弃用。
无论如何,我需要将参数传递给网络资源。使用 window.showModalDialog 没问题,但现在使用 Mscrm.CrmDialog 时我找不到任何传递参数的方法。构造函数有一个参数'customWindowParameters',但是如何从网络资源访问这些参数?
在调用对话框 (Mscrm.CrmDialog) 的脚本中声明全局变量,例如:
var variable1 = 5;
var object1 = { Id: 1, name: "SWA" };
function ribbon_OpenDialog() {
var clientUrl = Xrm.Page.context.getClientUrl();
var url = clientUrl + "/WebResources/new_myWebResource.html";
//CRM 2015 SP 1
var dialogwindow = new parent.Mscrm.CrmDialog(parent.Mscrm.CrmUri.create(url), this, 450, 175);
//For CRM less than CRM 2015 SP 1
//var dialogwindow = new Mscrm.CrmDialog(Mscrm.CrmUri.create(url), this, 450, 175);
dialogwindow.show();
}
以上全局声明的变量可以通过window.getDialogArguments()
在webresource中访问,如下例html webresource
<html>
<head>
<title></title>
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
<script type="text/javascript">
var dialog;
if (window.getDialogArguments() != null) {
dialog = window.getDialogArguments();
}
var v1 = dialog.variable1;
var o1 = dialog.object1;
function doSomthing() {
alert("variable1= " + v1 + "\n object1.Id=" + o1.Id + "\n object1.name=" + o1.name);
}
</script>
<style type="text/css">
.dvrow {
clear: both;
margin: 2px auto 0 auto;
padding: 10px 0 10px 0;
width: 96%;
}
.headerTitle {
font-family: Segoe UI Light, Segoe UI, Tahoma, Arial;
font-size: 27px;
font-weight: lighter;
}
</style>
</head>
<body>
<form id="formPopup">
<div id="spinner">
</div>
<div class="dvrow">
<div class="headerTitle">
Test dialog Popup
</div>
<div class="row">
<button title="Run" id="btnRun" onclick="doSomthing();" type="button">Run</button>
</div>
</div>
</form>
</body>
</html>
点击运行按钮结果:
我使用 Mscrm.CrmDialog 在 MS Dynamics CRM 2013 中显示一个带有网络资源的新对话框。此方法的优点是此对话框在 Firefox、Chrome 等中也有效 window.showModalDialog 不是因为它已被弃用。
无论如何,我需要将参数传递给网络资源。使用 window.showModalDialog 没问题,但现在使用 Mscrm.CrmDialog 时我找不到任何传递参数的方法。构造函数有一个参数'customWindowParameters',但是如何从网络资源访问这些参数?
在调用对话框 (Mscrm.CrmDialog) 的脚本中声明全局变量,例如:
var variable1 = 5;
var object1 = { Id: 1, name: "SWA" };
function ribbon_OpenDialog() {
var clientUrl = Xrm.Page.context.getClientUrl();
var url = clientUrl + "/WebResources/new_myWebResource.html";
//CRM 2015 SP 1
var dialogwindow = new parent.Mscrm.CrmDialog(parent.Mscrm.CrmUri.create(url), this, 450, 175);
//For CRM less than CRM 2015 SP 1
//var dialogwindow = new Mscrm.CrmDialog(Mscrm.CrmUri.create(url), this, 450, 175);
dialogwindow.show();
}
以上全局声明的变量可以通过window.getDialogArguments()
在webresource中访问,如下例html webresource
<html>
<head>
<title></title>
<script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
<script type="text/javascript">
var dialog;
if (window.getDialogArguments() != null) {
dialog = window.getDialogArguments();
}
var v1 = dialog.variable1;
var o1 = dialog.object1;
function doSomthing() {
alert("variable1= " + v1 + "\n object1.Id=" + o1.Id + "\n object1.name=" + o1.name);
}
</script>
<style type="text/css">
.dvrow {
clear: both;
margin: 2px auto 0 auto;
padding: 10px 0 10px 0;
width: 96%;
}
.headerTitle {
font-family: Segoe UI Light, Segoe UI, Tahoma, Arial;
font-size: 27px;
font-weight: lighter;
}
</style>
</head>
<body>
<form id="formPopup">
<div id="spinner">
</div>
<div class="dvrow">
<div class="headerTitle">
Test dialog Popup
</div>
<div class="row">
<button title="Run" id="btnRun" onclick="doSomthing();" type="button">Run</button>
</div>
</div>
</form>
</body>
</html>
点击运行按钮结果: