Как мы можем отформатировать валюту, используя размер группы культур в текстовом поле 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

Другие вопросы по тегам