我想在CRM 2011中的表单的OnSave事件上使用javascript更改字段的值。这只应在创建实体时发生。
这意味着我检查了OnCreate的FormMode,然后尝试使用以下命令更改字段值:
Xrm.Page.data.entity.attributes.get("field").setValue("asd");
Xrm.Page.data.entity.save();
或
Xrm.Page.getAttribute("field").setValue("asd");
Xrm.Page.data.entity.save();
他们都没有工作。如何在CRM 2011表单中使用JavaScript保存/更改值OnCreate?
代码:
function doSomeThingOnSave(ExecutionObj) {
var formType = Xrm.Page.ui.getFormType();
if (formType != 1) return;
var odataSelect = Xrm.Page.context.getServerUrl() + "/XRMServices/2011/OrganizationData.svc";
odataSelect += "/blablabla";
$.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) {
if (data.d.results != null && data.d.results[0] != null) {
var value= data.d.results[0].asdsda;
var field = Xrm.Page.getAttribute('sad');
if (field != null) {
field.setSubmitMode("always");
field.setValue(field.getValue() +value);
}
}
},
error: function (XmlHttpRequest, textStatus, errorThrown) {
if (errorThrown != "Forbidden")
alert('OData Select Failed: ' + odataSelect);
}
});
}
似乎我的调用是异步的。正确的代码将使调用与async:false
答案 0 :(得分:0)
我总是使用您的第二个示例来设置值,但由于您已经处于表单的OnSave
事件中,因此您不必明确调用entity.save()
。