CRM 2011 - 支持更改货币符号的javascript函数版本

时间:2012-08-28 13:34:30

标签: dynamics-crm-2011

我为CRM 4.0提供了这个不错的小javascript代码片段来更新表单的Money字段,以使用我传入的货币符号作为字符串。 (source

UpdateCurrencySymbolInUI: function (_curr) {
    // BTP: fail to update currency symbol if using browser other than IE (crmForm will not be defined)
    // (set currency not supported via Xrm.Page CRM 2011)
    if (!IsNull(crmForm)) {
        var iLen = crmForm.all.length;
        var oCtrl, i;

        for (i = 0; i < iLen; i++) {
            oCtrl = crmForm.all[i];
            if (!IsNull(oCtrl.IsMoney) && !oCtrl.IsBaseCurrency) {
                oCtrl.CurrencySymbol = _curr;
            }
        }
    }
}

它运行得很完美,但是对于IE以外的任何浏览器上的多浏览器支持(现在计划在2012Q4,对吗?)Microsoft's custom code validaiton tool suggests this code will not function的更改,因为不再支持crmForm。

经过一些谷歌搜索后,我没有看到设置货币sybmol的支持替代方案。我是否遗漏了API中的某些内容,或者他们只是删除此功能以分配货币符号(通过API)? This post suggests我使用document.getElementById并在字段名中添加“_sym”,但我认为这是不受支持的。我更喜欢支持的解决方案。

1 个答案:

答案 0 :(得分:1)

已编辑:OP的问题并未立即明显,但只有在通过JScript更改transactioncurrencyid属性时才会展示此行为(货币代码未更改)。

所以这就是MS在CRM Online和On Premise UR5(img.lu.transcur.htc)中所做的事情。看起来很像我。虽然在这里看不到任何浏览器特定的内容......:

function updateCurrencySymbolInUI(){
    if(!IsNull(_oForm))
        for(var iLen=_oForm.all.length,oCtrl,i=0;i<iLen;i++){
            oCtrl=_oForm.all[i];
            if(!IsNull(oCtrl.IsMoney)&&!oCtrl.IsBaseCurrency){
                oCtrl.CurrencySymbol=_sCurSym;
               oCtrl.CurrencyPrecision=_iCurPre
            }        
        }
}

我认为代码验证工具的问题是因为您所说的crmForm已被弃用。传递对页面的FORM对象(document.all['crmForm'])的引用,而不是crmForm。我认为这样可以很好地工作。

为什么你需要这个代码?如果您在包含Money字段的表单上更改交易币种,则控件中的货币符号会自动更改为“业务管理”中定义的符号&gt;货币。

如果符号不是您想要显示的符号,请在那里更改:)