2017-02-20 3 views
1

Я использую Kendo numericTextBox для отображения валюты. У меня есть требование отформатировать значение на основе выбранной валюты. Я могу правильно форматировать валюту для «en-US» и «de-DE», но у меня возникли проблемы с форматированием валюты для культуры, имеющей разный размер группы.Как мы можем форматировать валюту с использованием размера группы культуры в цифровом текстовом поле Kendo?

Все примеры и образцы в блоге Kendo находятся на «en-US» и «de-DE», которые имеют одинаковый размер группы.

Для валюты «en-US» groupSize свойство [3] означает, что каждая группа будет разделена после трех цифр, например. 1,000,000. Но для какой-либо другой культуры, которая имеет разную группировку, например. «en-IN», которые имеют «groupSize», равны [3,2,0], kendo все еще группирует число только в группе из 3: 1,000,000, тогда как мы ожидаем, что группировка будет 3 цифры, тогда разделитель затем группа из 2 цифр и т. д .: 10,00,000.

Может ли кто-нибудь помочь мне в этом?

Вот мой пример кода: http://dojo.telerik.com/@jayesh-jayakumar/AtojA/8

ответ

0

Так что проблема вы используете старую версию KendoUI без этой функции реализованы. Вот фрагмент с новейшей версией кендо, и это выглядит, что он ведет себя diffrent для en-IN: http://dojo.telerik.com/aqEwun

Однако я не уверен, если это exacly, как она работает в этой культуре потому что это создает только две группы цифр, как вы можете см. мой пример (из десятичного разделителя это группа из 2, группа из 3 и остальные цифры).

EDIT:

Так как вы упомянули вы хотели бы иметь различное поведение, что и в примере (начиная с десятичной точки одна группа из 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

+0

Ох. Хорошо, я обновлю версию KendoUI и проверю, как она работает. Но, как вы упомянули, группировка неверна. Несмотря на то, что первые две группы правильно обозначены, остальные цифры группируются вместе. Это не так. Можно ли создать собственный формат валюты на основе размера группы на стороне клиента? –

+0

Я пробовал с пользовательскими форматами, но безуспешно. Однако я обновил свой ответ с помощью решения, связанного с изменением определения культуры. –

+0

Большое спасибо @Jaroslaw. Эта работа поможет мне создать более общее решение для обработки разных культур с той же проблемой размера группы. Спасибо вам за понимание. Как вы уже упоминали, я надеюсь, что telerik вскоре придумает решение проблемы. Еще один .. если вы считаете, что мой вопрос является действительным, тогда PLS upvote. :) –

Смежные вопросы