2017-06-24 65 views
2

我有一個數字格式化與不同語言的小數相關的問題。 對於CURRENCY控件,系統根據來自URL參數的語言採用正確的格式; US and DE ?sap-ui-language=DE?sap-ui-language=USSAPUI5 - 數字格式本地化

對於具有type=Number屬性輸入字段,始終使用DOT作爲小數分隔無論語言設置的。 有沒有解決這個問題的方法? 我有一個動態sap.ui.table填充(對於行和列),有些行有數字字段和一些行作爲文本字段,所以我從後端動態發送數據格式如下;

temp = new sap.m.Input(sColumnId + index,{ value:"{path: '" + sColumnId + "'}" , type:"{DATATYPE}", textAlign:"Right", liveChange:[handle_livechange,this], change:[handle_change, this] , editable:"{path:'EDITABLE', type:'sap.ui.model.odata.type.String'}" } 

由於某些行是基於文本的,我不能像以下那樣硬編碼格式化程序;

type:'sap.ui.model.type.Float', formatOptions : { groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2}}" 

我試過自定義格式化程序,但不知何故在動態表格上找不到我的格式程序功能。 我嘗試onChange方法來動態格式化,但在這種情況下,我的JavaScript計算不起作用。

如果我可以通過表達式綁定來控制基於行值的格式化選項,它也將解決我的問題,但下面的代碼不起作用。

temp = new sap.m.Input(sColumnId + index,{ value:"{path: '" + sColumnId + ", =${DATATYPE} === 'Number' ? type:'sap.ui.model.type.Float', formatOptions : { groupingEnabled: true, groupingSeparator: '.', decimalSeparator : ',', minFractionDigits: 2} : type:'sap.ui.model.type.String' }" 
+0

哪些值後端可以在{DATATYPE}屬性中返回? –

+0

這是eithet號碼或文本。這兩種格式都正常工作,但是當它是數字時,系統將小數點分隔符作爲DOT而不管語言設置如何 – bilen

+0

爲什麼不簡單地使用它,如下所示:?這應該會自動採用區域設置來構建正確的分隔符。 –

回答

0

這種方法適用於我: 定義 在格式化文件基於環境的格式,如:

 sap.ui.define([ 
      "sap/ui/core/format/NumberFormat" 
     ], function (NumberFormat) {  
     var oFloatNumberFormat = NumberFormat.getFloatInstance({ 
        maxFractionDigits: 2, 
        minFractionDigits : 2, 
        groupingEnabled: true 
       } , sap.ui.getCore().getConfiguration().getLocale()); 
     } 


     return { 
       floatFormat: function(value){ 
       return oFloatNumberFormat.format(value); 
      }, 
    } 
}); 

現在要使用它:

var MyVar= new sap.m.Input({ 
      value: { 
       path: "..../amount" , 
       formatter : function(amount) { 
        return yourdefinedname.floatFormat(amount); 
       } 
      } 
      }); 
+0

thx man!我使用了類似的方法,我將其標記爲答案:D – bilen

相關問題