在表单上设置小数值并不总是有效 - Dynamics CRM 2013

时间:2017-06-05 06:52:23

标签: javascript dynamics-crm crm microsoft-dynamics dynamics-crm-2013

希望有人可以帮忙解决这个问题。我知道如何在表单上设置字段值,它在某种程度上工作。我的查询是围绕这样一个事实:它只有在我将这行作为一行单独放入表单加载事件时才有效。

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
    }
    );

2 个答案:

答案 0 :(得分:1)

我发现了为什么这不起作用(即使代码是正确的),我在这里发布我的答案,以帮助其他可能有同样问题的人。

条目编号字段在表单加载时获得焦点,这会清空其(javascript set)值的字段。我通过将另一个文本框字段作为表单上的第一个字段来修复此问题,现在该字段显示了javascript设置值(不需要更改代码)。

我怀疑当我将代码放入表单加载事件时,它会同步运行,但当我将相同的代码行放入retrieveMultipleRecords成功回调函数时,因为它以异步方式运行,它会出现此问题。希望这可以帮助其他人解决这个问题。

答案 1 :(得分:0)

这应该有效。

Xrm.Page.getAttribute("fieldname").setValue(parseFloat(eval(1.01)));

或者这也应该有用。

Xrm.Page.getAttribute("fieldname").setValue("1.01");

参考文献:

https://social.microsoft.com/Forums/en-US/487202fe-9982-45e1-8133-33b883927c35/haw-to-set-the-precision-of-a-dicimal-field-using-javascrip?forum=crmdevelopment

http://mscrmtutorials.blogspot.com/2015/10/get-or-set-values-of-all-data-types.html