2

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

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

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

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

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

  1. 为什么会导致回调方法失败?
  2. oDataSetName 应该是什么以及它在 CRM 中的确切存储位置 - 是否总是 EntityName 后跟 Set?

我在这里有点迷路,因为我对 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);
}
4

1 回答 1

1

我猜你有一个大小写问题。它应该是ntt_programmeSet,或与之相等的东西,但大小写不同。

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

于 2013-03-19T17:13:33.237 回答