ExtJS DateField использует другой формат отображения - PullRequest
5 голосов
/ 11 августа 2009

Я использую ExtJS DateField в веб-приложении ASP.NET MVC.

Я установил для свойства format значение "Y-m-d", чтобы он правильно анализировал формат "2009-08-11" с сервера и также отправлял его обратно в этом формате.

Однако я хотел бы отобразить данные в другом, более удобном для пользователя формате, особенно на испанском языке "d mmm yyyy".

Я не могу понять, как это сделать. Я не думаю, что свойство altFormats помогает, поскольку оно просто добавляет больше форматов разбора.

Можно ли использовать формат разбора, отличный от формата отображения? Или я поступаю неправильно?

Ответы [ 4 ]

6 голосов
/ 11 августа 2009

да. Это возможно.

См. http://extjs.com/deploy/dev/docs/?class=Date для форматов даты.

Сведения о том, что можно настроить из коробки, см. В папке ext-3.0.0 \ src \ locale \ Включите соответствующий файл или просто настройте свой собственный, используя один из файлов в качестве шаблона.

Например:

Date.monthNames = [
   "Januar",
   "Februar",
   "Marec",
   "April",
   "Maj",
   "Junij",
   "Julij",
   "Avgust",
   "September",
   "Oktober",
   "November",
   "December"
];

Date.dayNames = [
   "Nedelja",
   "Ponedeljek",
   "Torek",
   "Sreda",
   "Četrtek",
   "Petek",
   "Sobota"
];

console.log((new Date()).format('Y-M-D'))

С уважением, Joshua

4 голосов
/ 11 августа 2009

На самом деле, конфигурация format используется как для анализа, так и для установки формата отображения. Пока altFormats содержит все возможные форматы данных, которые вы хотели бы поддерживать для синтаксического анализа (значение по умолчанию включает Y-m-d), вы должны иметь возможность делать что-то вроде этого:

Ext.onReady(function(){
    new Ext.form.DateField({
        format: 'd F Y', // 'd mmm yyyy' is not valid, but I assume this is close?
        width: 200,
        renderTo: Ext.getBody(),
        value: '2009-08-11'
    });
});
1 голос
/ 11 августа 2009

Итак, чтобы уточнить мое понимание, у вас есть поле даты, которое:

  1. Требуется синтаксический анализ на сервере в формате Y-m-d
  2. Вы хотите отобразить дату в формате d ммм гггг, используя названия месяцев Спаниньша

Моя первоначальная реакция, исходя из моего понимания, заключается в том, что вы можете настроить поля ext date для форматирования и проверки второго формата ('d mmm yyyy'), используя опцию format config (format: 'd mmm yyyy') , Затем вы отправили бы это обратно на сервер, к вашему действию контроллера (я полагаю), как строковый параметр, а не DateTime. Затем в действии вашего контроллера проанализируйте строку даты и конвертируйте ее, используя:

 DateTime.ParseExact(myDate, 'd mmm yyyy',  CultureInfo.CurrentCulture)

или аналогичный, и затем вы можете преобразовать его в любой формат из этого объекта даты.

Это оставляет только сокращенные имена в полях даты в браузере. Я не совсем уверен, как Ext справляется с этим, но я не знаю о возможности переопределить формат даты и заставить его использовать определенную культуру, из Ext / Javascript, поэтому я ожидаю, что вы будете на милость браузера / ОС без написания чего-либо самостоятельно.

ОБНОВЛЕНИЕ:

В сочетании с примером, приведенным Иисусом для названий месяцев / дней, должно быть найдено решение, которое вы ищете.

Надеюсь, это поможет.

0 голосов
/ 25 мая 2011

Вас могут заинтересовать следующие плагины для DateField и TimeField: http://www.rahulsingla.com/blog/2010/05/extjs-date-time-field-plugins-for-efficient-data-entry

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...