【问题标题】:How to pass CRM Dynamics 2015 Form data(filed values) to an HTML page which has JavaScript functions如何将 CRM Dynamics 2015 表单数据(字段值)传递到具有 JavaScript 函数的 HTML 页面
【发布时间】:2015-07-30 14:38:04
【问题描述】:

我最近获得了一个用于网络电话网络客户端的 JavaScript API。我想从 CRM 启动此客户端并将我的 CRM 表单数据传递给它,我创建了一个自定义功能区按钮,该按钮必须调用该 HTML 页面并将相关数据传递给它。

功能区按钮应该启动到网络电话的 URL,但同时将参数传递给 HTML 页面中的 JavaScript 函数,我是在功能区上使用 JavaScript 操作还是使用 URL 操作,如果我使用 URL如何将数据传递给 JScript 函数?

为了更清楚地说明这一点,我在 CRM 中有一个联系人实体,它有一个手机号码,我想将其作为参数传递给 HTML 页面,该页面具有我想用于网络电话客户端的 JavaScript 函数

【问题讨论】:

  • 您是从 CRM 中的网络资源启动您的 html 页面吗?如果是这样,您可以省去通过 URL 传递数据的麻烦:只需在您的 html 页面中包含 ClientGlobalContext.js.aspx reference here,只传递记录 id 并通过 Xrm.Page.getAttributeValue() 访问任何属性。

标签: javascript html dynamics-crm dynamics-crm-2015 webresource


【解决方案1】:

如果您使用 url 来调用外部页面,您可以将参数附加为“GET”,以便在调用页面后:

page.html?phone=123123

然后您将能够从您的 html 页面访问它,因为其他帖子指出 Get url parameter jquery Or How to Get Query String Values In js 并且您应该没问题。此外,如果您将其用作页面中的嵌入式 Web 资源,您将能够通过 windows.parent.Xrm 访问表单属性

【讨论】:

    【解决方案2】:

    在html的head标签下面添加一行:

        <script src="ClientGlobalContext.js.aspx" type="text/javascript"></script>
    

    在加载 html 的情况下,还要添加此代码以运行:

     <script src="OnLoadHtml.js" type="text/javascript"></script>
    

    在 javascript OnLoadHtml.js 中添加以下代码:

    document.onreadystatechange = function () {
        //When document is ready
        if (document.readyState == "complete") {
            //Get sent arguments in url
            var arguments = GetQueryArgument();
            //Decode encoded arguments
            var decodedArguments = decodeURIComponent(arguments)
        }
    }
    
    //Gets query passed argument
    function GetQueryArgument()
    {
        /*Get the any query string parameters and load them
        into the vals array*/
        var result = "";
        var vals = new Array();
        if (location.search != "") {
            vals = location.search.substr(1).split("&");
            for (var i in vals) {
                vals[i] = vals[i].replace(/\+/g, " ").split("=");
            }
            //look for the parameter named 'data'
            var found = false;
            for (var i in vals) {
                if (vals[i][0].toLowerCase() == "data") {
                    result = vals[i][1];
                    found = true;
                    break;
                }
            }
            if (!found)
            {
                result = "";
            }
        }
        else
        {
            result = "";
        }
        return result;
    }
    

    将结果从 html 返回到 javascript:

    在html的body标签下面添加一行:

        <input id="btnOk" type="button" class="NormalButton" value="OK" onclick="BtnOK_OnClick();">
    

    并在下面为 javascript 部分添加此代码:

    //On ok button pressed
    function BtnOK_OnClick() {
        debugger;
        console.log("Ok is clicked");
        var result = GetResult();
        //Control value is not empty
        if (result === "")
        {
            retrun;
        }
        Mscrm.Utilities.setReturnValue(result);
        try
        {
            closeWindow(true); // Close the dialog box
        }
        catch (e)
        {
            console.log("Error happened at closing.");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-12
      • 2023-03-27
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多