如何使用OData JSON JQuery更新CRM 2013中的子网格记录

时间:2014-04-15 06:24:24

标签: json dynamics-crm-2011 dynamics-crm crm subgrid

以下是报价实体上的产品子网格。

现在添加新产品后,我将根据每单位价格,数量和折扣计算服务税和税。

现在我需要在子网格中设置计算的服务税和税值。

enter image description here

我想在Quote Entity中更新子网格的记录。我试过下面的代码,但仍然无法更新我的子网格。

function OnRefresh()
{ 
    var gridControl = document.getElementById("quotedetailsGrid").control;
    var  ids = gridControl.get_allRecordIds();  

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

      var quotedetail = new Object(); 
      quotedetail.new_service_tax = "1000";                 

      var id = ids[i].replace("{", "").replace("}", "");                                        

      QuoteProductRecord(id,quotedetail);

    }
}


function QuoteProductRecord(id,quotedetail) {

var jsonEntity = window.JSON.stringify(quotedetail);

var ODataPath = Xrm.Page.context.getServerUrl() + "/XrmServices/2011/OrganizationData.svc/QuoteDetailSet";

$.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    datatype: "json",
    data: jsonEntity,
    url: ODataPath + "(guid'" + id + "')",
    beforeSend: function (XMLHttpRequest) {
        XMLHttpRequest.setRequestHeader("Accept", "application/json");
        XMLHttpRequest.setRequestHeader("X-HTTP-Method", "MERGE");
    },
    success: function (data, textStatus, XmlHttpRequest) {

       alert("Success");
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) { }
});

}

问题是没有抛出错误,但子网格中的服务税和税值仍为空白。

在JSON功能中,我也尝试提醒成功消息,但我既没有成功消息也没有任何错误消息。

2 个答案:

答案 0 :(得分:0)

检查您正在进行的操作是否合法。您是否可能传递导致空字符串的值。

答案 1 :(得分:0)

我刚刚在我的生产环境(CRM2013 Online)中使用上述代码导入了我的解决方案。它运作良好。