使用REST端点检索实体时自定义实体的ODataSetName

时间:2013-03-19 17:06:38

标签: javascript ajax dynamics-crm-2011 odata

在我的restendpoint.js中,我将retrieveRecord函数定义为here

我有一个函数应该在Application实体上更改Program(查找字段)时运行。它应该基本上检索程序记录的属性。

我对oDataSetName应该是什么感到困惑?

我的实体的显示名称是Program 实体的名称是ntt_programme

我尝试过ProgrammeSet和ntt_ProgrammeSet但没有成功。 ajax调用导致失败回调方法,即,在我的情况下,我得到警告In ProgrammeErrorCallBack

  1. 为什么导致故障回叫方法?
  2. oDataSetName应该是什么以及CRM存储的确切位置 - 是否始终是EntityName后跟Set?
  3. 我有点迷失在这里因为我是JS / AJAX / REST / JSON的新手!


    ProgrammeOnChange: function () {
        var programmeLookup = Xrm.Page.getAttribute("new_programmeid").getValue();
        if (programmeLookup != null && programmeLookup[0] && programmeLookup[0].name != null) {
            var programmeId = programmeLookup[0].id;
            alert(programmeId);
            var oDataSetName = "ProgrammeSet";
            CRM2011Common.Functions.retrieveRecord(programmeId, oDataSetName, CRM2011.Application.ProgrammeSuccessCallBack, CRM2011.Application.ProgrammeErrorCallBack);
        }
    },
    
    ProgrammeSuccessCallBack: function (result) {
        alert("In ProgrammeSuccessCallBack");
        var programme = result;
        alert(programme.new_name);
    },
    
    ProgrammeErrorCallBack: function (XmlHttpRequest, textStatus, errorThrown) {
        alert("In ProgrammeErrorCallBack");
        alert('Error retrieving Programme: ' + textStatus + ' ' + errorThrown);
    }
    

1 个答案:

答案 0 :(得分:1)

我猜你有大写问题。它应该是ntt_programmeSet,或类似的东西,但具有不同的套管。

我总是建议先使用LinqPad来测试REST oData调用。它可以防止因套管问题而导致任何错误。您可以创建与CRM SDK端点的新odata连接,然后编写linq语句以撤回信息。如果单击Lambda符号,它将为您提供odata URL。只要您的javascript生成确切的网址,您就应该很好。