在我的 restendpoint.js 中,我有定义的 retrieveRecord 函数 here
我有一个函数应该在应用程序实体上的程序(查找字段)更改时运行。它应该基本上检索程序记录的属性。
我对 oDataSetName 应该是什么感到有点困惑?
我的实体的显示名称是 Program 实体名称为ntt_programme
我尝试过 ProgrammeSet 和 ntt_ProgrammeSet 但没有成功。 ajax 调用导致失败回调方法,即,在我的情况下,我收到警报 In ProgrammeErrorCallBack
- 为什么会导致回调方法失败?
- 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);
}
最佳答案
我猜你遇到了大写问题。它应该是 ntt_programmeSet
,或类似的东西,但大小写不同。
我总是推荐使用 LinqPad首先测试 REST oData 调用。它可以防止您因套管问题而出现任何错误。您可以创建一个新的到 CRM SDK 端点的 odata 连接,然后编写一个 linq 语句来拉回信息。如果您单击 Lambda 符号,它将为您提供 odata URL。只要您的 javascript 生成准确的 url,您就可以了。
关于javascript - 使用 REST 端点检索实体的自定义实体的 ODataSetName,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15505998/