2014-11-15 4 views
0

Я использую Kendo Grid (версия 2014.1.318) с встроенным редактированием на тему «de-DE». Поэтому числа должны использовать запятую (,) в качестве разделителя десятичных чисел, например: 79,5.KendoUI Inline Редактировать числовое текстовое поле с другой культурой

Числовой текстовый блок в сетке отображает ожидаемый формат в режиме «Редактирование». Здесь нет проблем. Но когда я нажимаю кнопку «Обновить», она отправляет «79,5» вместо «79,5» обратно на мой сервер. Мой сервер настроен с использованием культуры «de-DE», и ModelBinder не смог обработать номера в этом формате и, как результат, назначил ZERO моей переменной.

Это известная ошибка или я что-то упускаю? Все отлично, когда я использую культуру «en-US» или любую культуру, которая использует период (.) В качестве своего десятичного разделителя.

+0

Помогает ли это? [Kendo globalization] (http://docs.telerik.com/kendo-ui/aspnet-mvc/globalization) –

+0

Я уже использовал ту же культуру как на стороне сервера, так и на стороне клиента, но не работает. –

ответ

0

ли вы включить файл kendo.culture.de-DE.min.js:

ли вы изменить культуру кендо:

kendo.culture("de-DE"); 

В прошлом вы также можете попробовать изменить культура в цифровом текстовом поле:

@Html.Kendo().NumericTextBox().Culture("de-DE") 
+0

Как я уже говорил, «Цифровое текстовое поле в сетке отображает ожидаемый формат в режиме« Редактирование ». Здесь нет проблем ». Конечно, я уже сделал то, что вы упомянули. В противном случае я бы не сказал, что «отображает ожидаемый формат». –

0

У нас такая же проблема в течение года. По-видимому, для Telerik это не так важно, или мы пропустили решение.

Это, как мы ее решили:

Pass эту функцию к функции данных сетки создания и обновления, как здесь:

.Update(update => update.Action("Update", "Gradings").Type(HttpVerbs.Put).Data("convertDecimals"))) 

function convertDecimals(data) { 
    for (var property in data) { 
    var value = data[property]; 
    if (typeof value === "number") { 
     // if the number is integer 
     if (value % 1 == 0) { 
     data[property] = value.toString(); 
     } 
     else { 
     data[property] = kendo.toString(value, "n"); 
     } 
    } 
    } 
} 

и это на редактирование:

.Events(events => events.Edit("replaceDecimalSign")) 

function replaceDecimalSign(data) { 
    var value = $(data).val(); 
    var converted = value.toString().replace('.', ','); 
    $(data).val(converted); 
} 

Также вам нужны правильные настройки культуры, такие как alreay, на которые ответил MohQut.

kendo.culture("de-DE"); 
+0

Я попробую и обновит вас. –

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