2012-08-28 32 views
2

我对CRM 4.0这个可爱的小JavaScript片段更新形式的货币领域使用的货币符号我通过为一个字符串。 (sourceCRM 2011 - 支持javascript函数的版本改变货币符号

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

它完美,但对于未来的变化,以多浏览器支持(定于2012Q4现在,对吧?)​​对IE以外的任何浏览器,因为crmForm不再支持。

一些google搜索后,我没有看到支持的替代设置货币sybmol。我是否在API中缺少某些东西,或者他们是否仅仅删除了此功能来分配货币符号(通过API)? This post suggests我使用document.getElementById并将“_sym”添加到fieldname,但我认为这是不受支持的。我更喜欢支持的解决方案。

+0

我敢肯定,你是知道的,但你的旧代码也是不支持的。 –

回答

1

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

因此,这是MS仍然在CRM Online和内部部署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字段的表单上更改交易货币,则控件中的货币符号会自动更改为在“业务管理”>“货币”中定义的符号。

如果符号是不是你想要显示一个有改变吧:)

+0

好点,我应该提到通过javascript更改transactioncurrencyid。我喜欢你的答案,但是我已经意识到在这方面的工作真的需要推迟,直到我们掌握了这些信息,因为直到那时我们才能测试。我也可以问你为什么建议document.all ['crmForm']?我对此并不熟悉,只是感兴趣为什么会有所不同。 (编辑:因为我这个推迟我会继续和先发制人标记你的答案,如果/当这个代码被汇总修订后,我会更新这个帖子对我的结果) – BenPatterson1