我为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”,但我认为这是不受支持的。我更喜欢支持的解决方案。
答案 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;货币。
如果符号不是您想要显示的符号,请在那里更改:)