Как мы можем отформатировать валюту, используя размер группы культур в текстовом поле Kendo?
Я использую Kendo numericTextBox для отображения валюты. У меня есть требование отформатировать значение на основе выбранной валюты. Я могу правильно отформатировать валюту для "en-US" и "de-DE", но у меня возникают проблемы с правильным форматированием валюты для разных групп.
Все примеры и примеры в блоге Kendo представлены на "en-US" и "de-DE", которые имеют одинаковый размер группы.
Для валюты "en-US" groupSize
свойство [3]
что означает, что каждая группа будет разделена после 3 цифр, например 1,000,000
, Но для некоторой другой культуры, которая имеет другую группировку, например, "en-IN", у которой "groupSize" равен [3,2,0]
, кендо еще сгруппировать номер только в группу из 3: 1,000,000
в то время как мы ожидаем, что группа будет состоять из 3 цифр, затем разделитель, затем группа из 2 цифр и т. д.: 10,00,000
,
Кто-нибудь может мне помочь в этом?
Вот мой пример кода: http://dojo.telerik.com/@jayesh-jayakumar/AtojA/8
1 ответ
Так что проблема в том, что вы используете старую версию KendoUI без этой функции. Вот фрагмент с новейшей версией кендо, и он выглядит как en-IN
: http://dojo.telerik.com/aqEwun
Однако я не уверен, что именно так это и работает в этой культуре, потому что он создает только 2 группы цифр, как вы можете видеть на моем примере (из десятичного разделителя это группа из 2, группа из 3 и остальные цифры).
РЕДАКТИРОВАТЬ:
Итак, как вы упомянули, вы хотели бы иметь поведение, отличное от приведенного в примере (начиная с десятичной точки, одной группы из 3 цифр и затем групп из 2). Кажется, это ошибка, и, возможно, Telerik однажды исправит это. До тех пор, вы можете изменить groupSize
значение в объекте культуры от [3, 2, 0] до [3, 2], чтобы достичь того, что вы хотите.
Чтобы исправить это глобально во всех связанных культурах, вы можете использовать следующий код:
for(var i in kendo.cultures){
var culture = kendo.cultures[i];
if(JSON.stringify(culture.numberFormat.groupSize) === '[3,2,0]'){
culture.numberFormat.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.currency.groupSize) === '[3,2,0]'){
culture.numberFormat.currency.groupSize = [3, 2];
}
if(JSON.stringify(culture.numberFormat.percent.groupSize) === '[3,2,0]'){
culture.numberFormat.percent.groupSize = [3, 2];
}
}
PS. Вы можете использовать лучшую функцию сравнения массивов, чем JSON.stringify()
,
Обновленный фрагмент: http://dojo.telerik.com/aqEwun/3