【问题标题】:Retrieving and Updating a Record not Working in MS CRM检索和更新在 MS CRM 中不起作用的记录
【发布时间】:2016-03-23 05:50:10
【问题描述】:

这是我的场景。由于我是 Microsoft Dynamics 编码的新手,因此需要我的代码的解决方案。

我有两个名为 Acc 和 Con 的实体,其中 Acc 是父实体,Con 是 Acc 的子实体。

我在 Con 实体中创建了 Acc 的查找字段以及两个实体中具有相似数据类型的字段。

因此,每当在字段中对父记录进行更改并保存时,应在子记录的相应字段中自动进行更改。

我得到错误的部分是更新但能够检索代码。所以记录更新失败。

我现在得到的错误是

ReferenceError:FetchRecordsCallBack 未在 Object.GetRecs.jQuery.ajax.success 中定义

我们欢迎您的回答和建议。 :) 下面是我的代码。

function accupdate() {
debugger;
var PrvdLocData;
var name;
var age;
var sex;
var address;
var phonenumber;
var degree;
var sslcpercentage;
var hscpercentage;
var ugpercentage;

var PrvdLocData = new Array();

var EmpId = Xrm.Page.data.entity.getId();

//parent fields
if (Xrm.Page.getAttribute("new_name").getValue() != null) {
    name = Xrm.Page.getAttribute("new_name").getValue();
}

if (Xrm.Page.getAttribute("new_age").getValue() != null) {
    age = Xrm.Page.getAttribute("new_age").getValue();
}

if (Xrm.Page.getAttribute("new_sex").getValue() != null) {
    sex = Xrm.Page.getAttribute("new_sex").getValue();
}

if (Xrm.Page.getAttribute("new_address").getValue() != null) {
    address = Xrm.Page.getAttribute("new_address").getValue();
}

if (Xrm.Page.getAttribute("new_phonenumber").getValue() != null) {
    phonenumber = Xrm.Page.getAttribute("new_phonenumber").getValue();
}

if (Xrm.Page.getAttribute("new_degree").getValue() != null) {
    degree = Xrm.Page.getAttribute("new_degree").getValue();
}

if (Xrm.Page.getAttribute("new_sslcpercentage").getValue() != null) {
    sslcpercentage = Xrm.Page.getAttribute("new_sslcpercentage").getValue();
}

if (Xrm.Page.getAttribute("new_hscpercentage").getValue() != null) {
    hscpercentage = Xrm.Page.getAttribute("new_hscpercentage").getValue();
}

if (Xrm.Page.getAttribute("new_ugpercentage").getValue() != null) {
    ugpercentage = Xrm.Page.getAttribute("new_ugpercentage").getValue();
}


var context = Xrm.Page.context;
var serverurl = context.getClientUrl();
var ODatapath = serverurl + "/XRMServices/2011/OrganizationData.svc";
var retrieveResult = new XMLHttpRequest();
var dtqeurl = ODatapath + "/new_conSet?$select=new_name,new_YourAge,new_YourSex,new_HomeAddress,new_Contact,new_DegreeType,new_SSLCPercent,new_HSCPercent,new_conId,new_UGPercent&$filter=new_AccName/Id eq guid'" + EmpId + "'";
GetRecs("PrvtLoc", dtqeurl);

function GetRecs(entity, url) {
    jQuery.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: url,
        async: false,
        beforeSend: function XMLHttpRequest(XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");

        },
        success: function (data, textStatus, XmlHttpRequest) {
            if (data && data.d != null && data.d.results != null) {
                AddRecordsToArray(data.d.results, entity);

            }
        },
        error: function (XmlHttpRequest, textStatus, errorThrown) {
            //  alert("Error :  has occured during retrieval of the records ");
        }
    });
}

function AddRecordsToArray(result, entity) {
    $.each(result, function () {

        if (entity == "PrvtLoc")
            PrvdLocData.push(this);


    });
}
if (PrvdLocData.length > 0) {

    for (i = 0; i < PrvdLocData.length; i++) {

        //Object Assigning

        var crmobject = new Object();

        //Variable declaration for Child entity's primarykey (ID)

        var childId = PrvdLocData[i].new_conId;

        //Setting child entitiy's value with parent entity's variable

            crmobject.new_name = name;
            crmobject.new_YourAge = parseInt(age);
            crmobject.new_YourSex = sex;
            crmobject.new_HomeAddress = toString(address);
            crmobject.new_Contact = parseInt(phonenumber);
            crmobject.new_DegreeType = degree;
            crmobject.new_SSLCPercent = sslcpercentage;
            crmobject.new_HSCPercent = hscpercentage;
            crmobject.new_UGPercent = ugpercentage;


        // update starts...

    var serverUrl = Xrm.Page.context.getClientUrl();

    var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
    var crmobject = new Object();
    // Specify the ODATA entity collection 
    var ODATA_EntityCollection = "/new_conSet";
    var jsonEntity = window.JSON.stringify(crmobject);
        //Asynchronous AJAX function to Create a CRM record using OData 
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            datatype: "json",
            url: serverUrl + ODATA_ENDPOINT + ODATA_EntityCollection + "(guid'" + childId + "')",
            data: jsonEntity,
            beforeSend: function (XMLHttpRequest) {
                //Specifying this header ensures that the results will be returned as JSON. 
                XMLHttpRequest.setRequestHeader("Accept", "application/json");
                XMLHttpRequest.setRequestHeader("X-HTTP-Method", "MERGE");
            },
            success: function (data, textStatus, XmlHttpRequest) {
                alert("updated");



            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("fail to update");
            }
        });
    }


}

}

【问题讨论】:

    标签: javascript jquery ajax crud xrm


    【解决方案1】:
            crmobject.new_name = name;
            crmobject.new_YourAge = parseInt(age);
            crmobject.new_YourSex = { Value: sex };
            crmobject.new_HomeAddress = address;            
            crmobject.new_Contact = parseInt(phonenumber);
            crmobject.new_DegreeType = { Value: degree };
            crmobject.new_SSLCPercent = parseFloat(sslcpercentage).toFixed(2);
            crmobject.new_HSCPercent = parseFloat(hscpercentage).toFixed(2);
            crmobject.new_UGPercent = parseFloat(ugpercentage).toFixed(2);
    

    【讨论】:

    • 想解释一下你的答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多