CRM 2011:使用JS更改表单上的OnCreate值

时间:2014-01-02 09:46:49

标签: javascript dynamics-crm-2011 dynamics-crm

我想在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

同步

1 个答案:

答案 0 :(得分:0)

我总是使用您的第二个示例来设置值,但由于您已经处于表单的OnSave事件中,因此您不必明确调用entity.save()