CRM 2011 - 使用javascript设置货币字段的值

时间:2011-08-24 15:07:18

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

我真的找不到如何从货币字段中检索值并将其设置为另一个实体的另一个货币字段的值。

我的以下代码无效:

var entities = retrieveRecords("trainingSet?$filter=trainingId eq guid'" + GetLookUpData("trainingid").id + "'");
    if (entities != null) {
        if (entities.d.results.length > 0) {
            if (entities.d.results[0]["Price"] != null) {
                alert(entities.d.results[0]["Price"]);
                Xrm.Page.getAttribute("price").setValue(entities.d.results[0]["Price"].getValue());
                Xrm.Page.getAttribute("price").setSubmitMode("always");
            }

        }
    }

错误sais控件只有数字或null。

任何帮助都会非常感激!谢谢!

2 个答案:

答案 0 :(得分:6)

我之前使用过这个,即使我不是评价者的粉丝。

function SetMoneyAttribute(value, attribute) {
                      Xrm.Page.getAttribute(attribute)
                    .setValue(parseFloat(eval(value)));
        }

这是一篇关于使用查询值设置表单字段的博文。

http://crmscape.blogspot.com/2011/03/crm-2011-odata-json-and-crm-forms.html

答案 1 :(得分:1)

//mimic crm object model
var Xrm = { 
    Page : { 
        getAttribute : function(sAttr) { 
            return { 
                setValue : function(nValue) { 
                    alert(sAttr + ': ' + nValue);
                }
            }; 
        }  
    } 
};

function mySetValue(sAttr, nValue, nDefault) {
    Xrm.Page.getAttribute(sAttr)
        .setValue(
        !isNaN(nValue = parseFloat(nValue)) || 
        !isNaN(nValue = nDefault)
        ? nValue
        : null);                
} 

//call with various types of values
mySetValue("new_attr1",0);
mySetValue("new_attr2","");
mySetValue("new_attr3",4);
mySetValue("new_attr4",34.3434);
mySetValue("new_attr5","545.43");
mySetValue("new_attr6",{},0);
//mySetValue("new_attr7",entities.d.results[0]["Price"], 100.00);

由于错误声明属性只需要数字或null。遵守第一个是NaN检查是否 parseFloat返回一个数字。如果它返回undefined,它会尝试从默认值(如果提供)中获取数字。 如果那是未定义的而不是数字,那么它会分配一个空值。 如果您不需要默认值或者默认值始终是已知的(即null或0.0),则可以省略第二个isNaN测试