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

Javascript 使用REST端点检索实体时自定义实体的ODataSetName,javascript,ajax,dynamics-crm-2011,odata,Javascript,Ajax,Dynamics Crm 2011,Odata,在我的restendpoint.js中,我有定义的retrieveRecord函数 我有一个函数,它应该在应用程序实体上的程序(查找字段)更改时运行。它应该基本上检索节目记录的属性 我对oDataSetName应该是什么有点困惑 我的实体的显示名称是Program 实体名称为ntt\U计划 我尝试过ProgrammeSet和ntt_ProgrammeSet,但没有成功。ajax调用导致失败回调方法,即在我的例子中,我在ProgrammeErrorCallBack中获得警报 为什么会导致回调方法失

在我的restendpoint.js中,我有定义的retrieveRecord函数

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

我对oDataSetName应该是什么有点困惑

我的实体的显示名称是Program 实体名称为ntt\U计划

我尝试过ProgrammeSet和ntt_ProgrammeSet,但没有成功。ajax调用导致失败回调方法,即在我的例子中,我在ProgrammeErrorCallBack中获得警报

  • 为什么会导致回调方法失败
  • oDataSetName应该是什么?它在CRM中的具体位置是什么?它是否总是在EntityName后面加上Set
  • 我在这里有点迷茫,因为我对JS/AJAX/REST/JSON完全陌生



    我猜你有资本化的问题。它应该是
    ntt_programmeSet
    ,或与之相等的东西,但外壳不同


    我始终建议首先使用测试REST oData调用。它将防止您因套管问题而出现任何错误。您可以创建到CRM SDK端点的新odata连接,然后编写linq语句以提取信息。如果单击Lambda符号,它将为您提供ODataURL。只要您的javascript生成准确的url,您就应该很好。

    感谢您提供有关使用LinqPad测试REST oData调用的建议。稍后我们会就资本化问题回复您。而且,它就像一个符咒!
    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);
    }