如何使用 JavaScript 和 REST OData 查询 CRM 2011 AppointmentSet 时测试
How to test what data is present in d.data.results when querying CRM 2011 AppointmentSet using JavaScript and REST OData
我正在尝试填充"帐户"窗体上的一个字段,该字段显示帐户已完成约会的最后一个实际结束日期。我的查询似乎完全按照我想要的方式工作。我使用动态XRM工具解决方案创建了查询,但是如果帐户没有完成的活动或我创建了一个根本没有约会的新帐户,则无法处理会发生什么情况。
我正在尝试在我的 JavaScript 的 ExecuteQuery 函数中测试返回给我的成功方法的值 data.d.results。
当帐户是新创建的或帐户没有已完成的约会活动时,Visual Studio 中"即时"窗口中的 data.d.results 定义如下:
[]
[prototype]: []
我希望能够测试是否发生这种情况,然后阻止尝试将实际结束日期值设置为该字段。
我的代码如下:
/// <reference path="JQuery.js" />
/// <reference path="SDK.REST.js" />
/// <reference path="json2.js" />
// function to set read only fields on form load
function HarrionAB_AccountForm_OnLoad() {
debugger;
var accountId = Xrm.Page.data.entity.getId().replace("{", "").replace("}", "");
if (accountId != "") {
RetrieveRecords(accountId);
}
}
function RetrieveRecords(id) {
// create the odata query
var query = "/AppointmentSet?$select=*&$top=1&$orderby=ActualEnd desc&$filter=RegardingObjectId/Id eq guid'" + id + "' and StateCode/Value eq 1 and ActivityTypeCode eq 'appointment'";
ExecuteQuery(query);
}
//
// ExecuteQuery executes the specified OData Query asyncronously
//
// NOTE: Requires JSON and jQuery libraries. Review this Microsoft MSDN article before
// using this script http://msdn.microsoft.com/en-us/library/gg328025.aspx
//
function ExecuteQuery(ODataQuery) {
var serverUrl = Xrm.Page.context.getServerUrl();
// Adjust URL for differences between on premise and online
if (serverUrl.match(/'/$/)) {
serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}
var ODataURL = serverUrl + "/XRMServices/2011/OrganizationData.svc" + ODataQuery;
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: ODataURL,
beforeSend: function (XMLHttpRequest) {
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
//
// Handle result from successful execution
//
// e.g. data.d.results
if (data.d.results != "[]") { // I NEED TO TEST HERE
Xrm.Page.getAttribute("new_lastvisit").setValue(new Date(parseInt(data.d.results[0].ActualEnd.substr(6))));
}
},
error: function (XmlHttpRequest, textStatus, errorObject) {
//
// Handle result from unsuccessful execution
//
alert("OData Execution Error Occurred");
}
});
}
//
// Error Handler
//
function ErrorHandler(XMLHttpRequest, textStatus, errorObject)
{ alert("Error Occurred : " + textStatus + ": " + JSON.parse(XMLHttpRequest.responseText).error.message.value); }
任何帮助将不胜感激
该值是一个数组,因此您可以检查它是否包含任何值,如下所示:
if (data.d.results.length > 0) {
//Do whatever you need to in here
}
相关文章:
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 在动态crm 2011中,右键单击已完成活动的只读文本时,您是否出现错误
- CRM 2011对getAttribute的调用失败
- CRM 2011-在插入新记录或修改现有记录时捕获子网格的事件
- crm 2011使用javascript在仪表板上隐藏和显示子网格
- Javascript 选择本机 N:N 关系实体 crm 2011
- 通过 JavaScript 从主网格视图上的功能区按钮更新 CRM 2011 中的字段
- Javascript 函数在 CRM 2011 HTML Web 资源中无法识别
- 如何确定控件/插件是否从 CRM 2011 中功能区上的自定义按钮触发
- crm 2011 javascript将日期字段设置为null
- OnChange方法没有't触发点击-CRM 2011
- 将回复电子邮件地址更改为队列's在动态crm 2011中的电子邮件地址
- 谷歌地图Api在CRM Dynamics 2011 iframe"不可能使用显示属性“;消息
- 在CRM 2011中从JavaScript执行工作流
- 正在Microsoft Dynamics CRM 2011中加载描述内容
- 更改webresource Javascript CRM 2011中的字符串字体大小
- 在crm 2011中重新整理和读取静态文件
- CRM 2011:仅对某些实体启用批量编辑
- CRM 2011+问题与javascript中的两个选项集
- Dynamics 2011 CRM表单我正试图隐藏一个选项卡和/或它's部分