Crm 2013按钮打开新的潜在客户表单,通过首选联系人

时间:2014-03-27 12:02:43

标签: javascript json dynamics-crm-2011 dynamics-crm dynamics-crm-online

我已在主页主要联系人形式

中添加了“添加新主角”按钮

这会调用一个脚本来打开一个传递Crm参数FirstSelectedItemId

的新表单

因此,当我选择了一个联系人时,我可以点击创建新的潜在客户&将Id作为参数传递给函数:

function openNewLead(SelectedID) {
      parameters["customer"] = SelectedID;
      Xrm.Utility.openEntityForm("lead", null, parameters);
}

"顾客"是一个查找字段 现在我可以使用它并填充查找,但我没有传递全名,因此无法正常工作。如果我保存并刷新它的罚款!

所以我试过了:

function openNewLead(SelectedID) {
    if (SelectedID != null) {

        var parameters = {};

        var request = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/ContactSet?$select=FullName&$filter=ContactId eq guid'" + SelectedID + "'";
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            url: request,
            async: false,
            beforeSend: function (XMLHttpRequest) {
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
            },
            success: function (data, textStatus, XmlHttpRequest) {
                if (data.d.results.length > 0) {

                        var lookupValue = new Array();
                        lookupValue[0] = new Object();
                        lookupValue[0].id = SelectedID;
                        lookupValue[0].name = data.d.results[0].FullName;
                        lookupValue[0].entityType = "contact";
                        parameters["customer"] = lookupValue;

                }
            },
            error: function (XmlHttpRequest, textStatus, errorThrown) {
                /*Error Occurred*/
            }
        });

        Xrm.Utility.openEntityForm("lead", null, parameters);
    }
    else {
        Xrm.Utility.openEntityForm("lead");
    }
}

这不能在主页/主屏幕上工作,因为没有为Json添加参考

所以问题是如何从这里引用json或者有更好的方法来编写它?

谢谢

3 个答案:

答案 0 :(得分:1)

尝试此更改

success: function (data, textStatus, XmlHttpRequest) {
                if (data.d.results.length > 0) {
                     parameters["customerid"] = SelectedID;
                     parameters["customeridname"] = data.d.results[0].FullName;
                     parameters["customeridtype"] = "contact";    
                }
            }

答案 1 :(得分:0)

解决方案:

主/主页上的新主角按钮调用脚本打开传递CrmParameter的新表单FirstSelectedItemId

function openNewLead(SelectedID) {
    if (SelectedID != null) {
        var parameters = {};

        var contact = {};
        contact.Id = SelectedID;

        var jsonContact = JSON.stringify(contact);

        var PassContactReq = new XMLHttpRequest();
        PassContactReq.open("GET", Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc/ContactSet?$select=ContactId, FullName&$filter=ContactId eq guid'" + SelectedID + "'");
        PassContactReq.setRequestHeader("Accept", "application/json");
        PassContactReq.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        PassContactReq.onreadystatechange = function () {
            PassContact(this);
        };
        PassContactReq.send(jsonContact);

        function PassContact(PassContactReq) {
            if (PassContactReq.readyState == 4 /* complete */) {
                PassContactReq.onreadystatechange = null; //avoids memory leaks
                if (PassContactReq.status == 200) {
                    //Success

                    parameters["customer"] = JSON.parse(PassContactReq.responseText).d.results[0].ContactId;
                    parameters["customername"] = JSON.parse(PassContactReq.responseText).d.results[0].FullName;

                    Xrm.Utility.openEntityForm("lead", null, parameters);
                }
                else {
                    //Failure
                    Xrm.Utility.openEntityForm("lead");
                }
            }
        };

    } else {
        Xrm.Utility.openEntityForm("lead");
    }
}

太棒了:)感谢@Nicknow发表评论!

由于这是一个自定义查找字段,名称也因参数而异:忽略字符串&的“id”部分。没有要设置的类型。

花了太长时间才找到这个解决方案,所以希望它能帮助别人:)

答案 2 :(得分:0)

尝试使用引用的webresources和一些虚拟函数名称添加javascript操作。喜欢" isNaN"。 Ribbon Xml看起来像:

<Actions>
        <JavaScriptFunction FunctionName="isNaN" Library="new_json2"></JavaScriptFunction>
        <JavaScriptFunction FunctionName="isNaN" Library="new_jquery"></JavaScriptFunction>
        <JavaScriptFunction FunctionName="someFunctionUsingCoolExternalLibs" Library="new_referencinglibrary"></JavaScriptFunction>
      </Actions>

对不起我的英文:)