Как установить культуру в числовое текстовое поле валюты, не затрагивая другое числовое текстовое поле?

Я хочу знать, как мы можем динамически устанавливать/изменять культуру на числовые элементы управления формата «валюта», не затрагивая другие числовые элементы управления в кендо.

Сценарий: у меня есть 9 числовых текстовых полей кендо, из которых 4 имеют формат «Валюта». Я должен отобразить число, введенное в элемент управления «Валюта» в определенной «культуре» на основе валюты, выбранной пользователем из раскрывающегося списка. Выпадающие элементы будут иметь предполагаемую культуру, установленную в качестве их значений.

Например: если в раскрывающемся списке есть два элемента: «Доллар США», «Евро», то если пользователь выбирает «Доллар США» из раскрывающегося списка, тогда числа, введенные в элементе управления «Валюта», должны быть отформатированы в «en -культура США.

Я использую приведенную ниже конфигурацию javascript для установки числового текстового поля кендо.

 function setupNumericTextBoxes(root) {
        
   root.find("[data-role='numerictextbox']").each(function (index, dataControlObj) {

var textbox = $(dataControlObj).data("kendoNumericTextBox");
var numberFormat = $(dataControlObj).data("numberformat");
var cultureToSet = $(dataControlObj).data("culture");

var options = {};

            if (numberFormat === "percentage") {
                options.format = "##.00 \\%"
                options.decimals = 2;
                options.min = 0;
                options.spinners = false;
            }
            else if (numberFormat === "currency") {
                options.format = "c"
                options.decimals = 0;
                options.min = null;
                options.spinners = false;
            }
            else if (numberFormat === "year") {
                options.format = "#"
                options.decimals = 0;
                options.min = 0;
                options.spinners = false;
                setUpYearValidation(dataControlObj);
            }
            else if (numberFormat === "standard") {
                options.format = "n0"
                options.decimals = 0;
                options.min = 0;
                options.spinners = false;
            }
            else {
                options.format = "n0"
                options.decimals = 0;
                options.spinners = false;
            }

            if (cultureToSet){
                options.culture = cultureToSet;
            }

            textbox.setOptions(options);
            // Apply the format
            textbox.value(textbox.value());

        });
   
   

Нужна помощь в решении проблемы.


person Jayesh Jayakumar    schedule 23.11.2016    source источник


Ответы (1)


Чтобы использовать параметр настройки культуры в NumericTextBox, вы также должны убедиться, что вы включили соответствующий файл kendo.culture.LANGUAGE.min.js для каждой культуры, которую вы хотите поддерживать, иначе информация о формате культуры не будет быть включенным в массив kendo.cultures, который используется kendo для получения параметров форматирования.

http://docs.telerik.com/kendo-ui/api/javascript/ui/numerictextbox#configuration-culture

Итак, если вы хотите поддерживать «en-US» и «en-IE», вам нужно включить оба

kendo.culture.en-IE.min.js (который создает запись kendo.cultures["en-IE"])

А ТАКЖЕ

kendo.culture.en-US.min.js (который создает запись kendo.cultures["en-US"]).

Затем вы можете использовать «en-US» и «en-IE» в качестве параметра культуры для NumericTextBox.

Демонстрация: http://dojo.telerik.com/@Stephen/IhUre

person The Dread Pirate Stephen    schedule 23.11.2016
comment
Спасибо за помощь. Я включил требуемую культуру на страницу, но меня беспокоит применение определенной культуры к конкретному числовому элементу управления текстовым полем, остальные числовые текстовые поля принимают культуру en-US по умолчанию. Я хочу знать, как этого избежать. Я просто хочу, чтобы только один элемент управления был специфичен для культуры. Чтобы быть конкретным, как в вашем примере, я просто хочу, чтобы элемент управления #euro numeric textbox был специфичен для en-IE, а другой элемент управления был без какой-либо культуры. - person Jayesh Jayakumar; 28.11.2016
comment
Вы можете проверить правильность этой реализации? Я указываю культуру для одного элемента управления и не указал ее для другого. ** Текстовое поле с числовым значением, зависящим от культуры ** - person Jayesh Jayakumar; 28.11.2016
comment
Это выглядит хорошо. Если вы не укажете культуру, будет применена культура по умолчанию (которую, как я полагаю, кендо использует в США, если вы не укажете ее с помощью kendo.culture()). - person The Dread Pirate Stephen; 28.11.2016