【发布时间】:2013-08-02 12:26:12
【问题描述】:
我有 4 到 5 个自定义实体,每个实体都有一个表单。从一个表格到另一个表格会有一个流畅的进展,例如,第一个实体“预订屏幕”有一个表格,填写后用户将移动到下一个实体并填写其表格和下一个等等。
我希望根据将在第一个预订屏幕上分配的预订号上传之前填写的表格的一些信息。
例如,预订屏幕表单有:
名字、姓氏、预订号(唯一 ID)和其他信息...我希望下一个表单可以选择输入唯一 ID,然后从第一个开始自动填写姓名字段或其他信息表格。
我们可以通过工作流还是 java 脚本来做到这一点?我更喜欢 java 脚本,因为工作流是异步的。
我该怎么做?
使用上述库和一些搜索我想出了这个
function retrieveRecord(id, odataSetName, successCallback, errorCallback) {
var context = Xrm.Page.context;
var serverUrl = context.getServerUrl();
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
//Asynchronous AJAX function to Retrieve a CRM record using OData
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: serverUrl + ODATA_ENDPOINT + "/" + odataSetName + "(guid'" + id + "')",
beforeSend: function (XMLHttpRequest) {
//Specifying this header ensures that the results will be returned as JSON.
XMLHttpRequest.setRequestHeader("Accept", "application/json");
},
success: function (data, textStatus, XmlHttpRequest) {
if (successCallback) {
successCallback(data.d, textStatus, XmlHttpRequest);
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
if (errorCallback)
errorCallback(XmlHttpRequest, textStatus, errorThrown);
else
errorHandler(XmlHttpRequest, textStatus, errorThrown);
}
});
}
但这只是设置检索调用的方法吗?
我已经添加了 json2 和 jquery 1.4.1.min 库。
现在我已经在我想要填充的表单的 ONLOAD 事件中添加了这个。我希望当我在表单上添加预订号时(我猜这将在文本字段的 ON CHANGE 事件中进行)它应该从主表单中检索名字、姓氏、中间名、SSN#,即预订屏幕..
我该怎么做?
我的最终代码,但它没有在表单字段上设置任何值 函数 getContactDetails() { var lookUpObjectValue = Xrm.Page.getAttribute("inmate_lookupbookingscree").getValue(); 如果 ((lookUpObjectValue != null)) { var lookuptextvalue = lookUpObjectValue[0].name;
var lookupid = lookUpObjectValue[0].id;
//alert(lookupid);
var serverUrl = Xrm.Page.context.getServerUrl();
//The XRM OData end-point
var ODATA_ENDPOINT = "/XRMServices/2011/OrganizationData.svc";
//var odataSetName = "ContactSet";
var odataSelect = serverUrl + ODATA_ENDPOINT + "/" + "(guid'" + lookupid + "')";
//alert(odataSelect);
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
datatype: "json",
url: odataSelect,
beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Accept", "application/json"); },
success: function (data, textStatus, XmlHttpRequest) {
var result_contact= data.d;
//alert(result_contact.AccountNumber);
//replace the fields with the fields on your entity
Xrm.Page.getAttribute("inmate_firstname").setValue(result_contact.inmate_firstname);
Xrm.Page.getAttribute("inmate_lastname").setValue(result_contact.inmate_lastname);
},
error: function (XmlHttpRequest, textStatus, errorThrown) { alert('OData Select Failed: ' + odataSelect); }
});
}
}
【问题讨论】:
-
您的 odata 查询似乎有了一个良好的开端。您的名字和姓氏字段没有被填充吗?此外,正如 Campey 所建议的那样,如果您不在第一个屏幕上包含名字和姓氏,而是允许他们选择/创建联系人(您甚至可以创建一个自定义联系人表单,那么它可能会导致更简洁的设计对于这个过程)。您不希望允许您拥有的 4-5 个实体之间的名称不同。
-
是的,它们没有被填充。不,我需要预订屏幕(第一个屏幕)中的姓名。它们只会以我想要自动填充的形式读取。
-
说真的,我需要帮助,为什么这不起作用?!!!我已经在这里使用了模式名称 setValue(result_contact.inmate_FirstName);它仍然无法正常工作
标签: javascript workflow dynamics-crm-2011 autofill