希望有人可以帮助您。我知道如何在表单上设置字段值,并且它以某种方式起作用。我的查询围绕着这样一个事实,即只有将下面这行本身作为行放入表单加载事件中,它才有效。

Xrm.Page.getAttribute('cal_entrynumber').setValue(1.01);

但是,实际上,在设置此值之前,我需要进行一些条件检查,当我将此行放入这些条件检查时,我注意到的是文本框为空,但是如果我查看数据实体中的值,表示其值为1.01。

alert("No. in entity:" + Xrm.Page.data.entity.attributes.get('cal_entrynumber').getValue());

所以我想知道是否有人可以将我指出可能导致此问题的任何原因...这是该行所在的代码(不起作用)。

var queryString = "?$select=cal_EntryNumber&$filter=cal_SafetyProgrammeNo eq '" + spNo + "'&top=1&$orderby=cal_EntryNumber desc";
SDK.REST.retrieveMultipleRecords(
    "cal_operation",
    queryString,
    function (results) {
        //alert(results.length);
        if (results.length == 0) {
            //var entry = 1.01;
            //alert("Entry No:" + Number(entry));
            Xrm.Page.getAttribute('cal_entrynumber').setValue(1.01);

        }
        else {
            // Code to go here.
        }
    },
    errorHandler,
    function () {
        // OnComplete handler
    }
    );

最佳答案

我已经找到了为什么这行不通的原因(即使代码是正确的),我在这里发布了我的答案,以帮助可能遇到相同问题的其他任何人。

表单加载时,“条目号”字段将成为焦点,这将清空其(javascript设置)值的字段。我通过将另一个文本框字段作为表单的第一个字段来解决此问题,现在该字段显示的是javascript设置值(无需更改代码)。

当我将代码本身放入表单加载事件中以使其同步运行时,我怀疑这是可行的,但是当我将同一行代码放入retrieveMultipleRecords成功回调函数中时(由于此代码异步运行),就会出现此问题。希望这对其他人有帮助。

07-24 09:44
查看更多