我看过几篇不同的文章,它们似乎都暗示了同样的事情:
“使用所需的查询参数创建一个 url,并使用这个新的 Url 设置目标 iFrame,并让这个新页面读取请求”
我想知道是否有一种方法可以在不使用自定义 ASPX 页面的情况下做到这一点?
本质上,我想根据表单上的某些值在 iFrame 或 html Web 资源中动态显示一些文本。
我看过几篇不同的文章,它们似乎都暗示了同样的事情:
“使用所需的查询参数创建一个 url,并使用这个新的 Url 设置目标 iFrame,并让这个新页面读取请求”
我想知道是否有一种方法可以在不使用自定义 ASPX 页面的情况下做到这一点?
本质上,我想根据表单上的某些值在 iFrame 或 html Web 资源中动态显示一些文本。
SDK 中没有任何内容要求使用 ASPX。事实上,在 CRM 2011 中不鼓励这样做,因为您需要找到一些地方来托管您的 ASP.Net 页面。
使用基本 HTML 页面(在 CRM 中创建为 Web 资源),您可以在 HTML 文档的 HEAD 中声明一些 JScript(或者更好的是,引用 JScript Web 资源)。该 JScript 可以读取通过 iFrame 发送的查询字符串参数并从那里执行所需的任何操作。
请注意,SDK 声明任何自定义查询字符串参数本身必须经过编码并通过data
参数发送。
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>Example page</TITLE>
<META charset=utf-8></HEAD>
<BODY style="BACKGROUND-COLOR: #f6f8fa; MARGIN: 0px; FONT-FAMILY: Segoe UI" contentEditable=true onload="doStuff">
<SCRIPT type=text/jscript>
function doStuff(){
getQueryStrings();
alertOrganisationName();
}
function alertOrganisationName(){
alert(window.parent.Xrm.Page.context.getOrgUniqueName());
}
function getQueryStrings() {
var message = document.getElementById("myOutputArea");
var dataParameterString, querystring;
// get data from querystring
if (window.location.search != "") {
querystring = window.location.search.substr(1).split("&");
for (var i in querystring) {
querystring[i] = querystring[i].replace(/\+/g, " ").split("=");
}
//look for the parameter named 'data'
for (var i in querystring) {
if (querystring[i][0].toLowerCase() == "data") {
dataParameterString = querystring[i][1];
break;
}
}
message.innerText += dataParameterString;
} else {
message.innerText = "No details were specified in the querystring.";
alert("ERROR: " + message.innerText);
}
}
</SCRIPT>
<DIV id="myOutputArea"></DIV>
</BODY></HTML>