CRM 2011:使用javascript将值传递给IFRAME / Web资源

时间:2012-05-24 07:33:33

标签: javascript dynamics-crm-2011

我看了几篇不同的文章,他们似乎都暗示了同样的事情:

“使用所需的查询参数创建一个网址,并使用此新网址设置目标iFrame,并让此新页面读取请求”

我想知道是否有办法在不使用自定义ASPX页面的情况下执行此操作?

基本上我想基于表单上的某些值在iFrame或html Web资源中动态显示一些文本。

1 个答案:

答案 0 :(得分:4)

SDK中没有任何内容要求使用ASPX。事实上,在CRM 2011中,我们不鼓励您,因为您需要找到一些托管您的ASP.Net页面。

使用基本HTML页面(在CRM中作为Web资源创建),您可以在HTML文档的HEAD中声明一些JScript(或者更好的是,引用JScript Web资源)。 JScript可以读取通过iFrame发送的查询字符串参数,并从那里执行所需的任何操作。

Note that the SDK states任何自定义查询字符串参数都必须通过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>