我有一个功能区按钮命令,它执行一个javascript函数并传入网格中的选定行。我循环遍历该列表以创建$ select过滤器以生成RetrieveMultiple请求。 问题是我每次收到以下错误
400:错误请求:在位置1的“Microsoft.Xrm.Sdk.Entity”类型中不存在属性“id”
我尝试使用id
代替Id
,但我仍然遇到同样的错误。
我的代码在
function approveMultipleApplications(selectedApplicationReferences) {
if (selectedApplicationReferences && selectedApplicationReferences.length > 0) {
var filter = '';
for (var i = 0; i < selectedApplicationReferences.length; i++) {
filter += '(id eq guid\'' + selectedApplicationReferences[i].Id + '\')';
if (i < selectedApplicationReferences.length - 1) {
filter += ' or ';
}
}
var options = "$select=new_assessmentcount,new_requiredassessmentcount&$filter=" + filter;
try {
SDK.REST.retrieveMultipleRecords("new_application", options, retrieveApplicationsCallBack, function (error) {
alert(error.message);
}, retrieveComplete);
}
catch (ex) {
Xrm.Utility.alertDialog('Something went wrong, please try again or contact your administrator ' + ex, null);
}
}
else {
Xrm.Utility.alertDialog('You must select at least one application to approve', null);
}
}
selectedApplicationReferences [i] .Id的格式为{guid-value}
任何帮助或指导表示赞赏
答案 0 :(得分:4)
错误消息非常明显:使用 LogicalNameId 而不仅仅是 Id 。在您的情况下, new_applicationId :
filter += '(new_applicationId eq guid\'' + selectedApplicationReferences[i].Id + '\')';
由于数据库中实际上没有 Id -field,因此可能有点令人困惑。如果您使用例如早期绑定类, Id 字段在幕后为您设置,因此可能会让您感到困惑。 OData端点不返回 Id 字段。