Время рендеринга сетки ExtJS 00:00:00 (чч: мм: сс) с временным полем

#extjs #extjs4 #extjs4.2

#extjs #extjs4 #extjs4.2

Вопрос:

У меня есть сетка с редактором временных полей. Значения представлены в следующем формате:

 06:00:00 (hh:mm:ss)
  

Сейчас все в порядке, за исключением того, что моя функция рендеринга не определяет значение a допустимая дата:

 text: 'InTime',
    dataIndex: 'InTime',
    editor: {
        xtype: 'timefield',
        format: 'H:i',
        altFormats: 'H:i',
        selectOnFocus: true,
        minValue: '12:00 AM',
        increment: 60,
        maxValue: '11:00 PM'
    },
    renderer: function (value, metaData, record, row, col, store, gridView) {
        alert(value);
        return Ext.isDate(value) ? Ext.Date.format(value, 'H:i') : value;
    }
  

Когда он проверяет Ext.isDate , я получаю false, поэтому afeter, выбирающий значение из timefield, неправильно отформатирован.

Это мое изображение ячейки сетки, первая ячейка является исходной до изменения ее значения, вторая — это значение, которое она получает после выбора из TimeField

введите описание изображения здесь

Есть какие-нибудь подсказки?

Ответ №1:

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

формат и altFormats с одинаковым значением и оба определены как ‘H: i’, что равно 24 часам: минутам, что делает 12:00 и 11:00 недопустимыми записи.

Было бы важно, чтобы вы опубликовали выходные данные вашего хранилища, чтобы мы могли видеть формат вашего столбца inTime, а также разместили код для вашей модели.

  • Вместо использования оповещения используйте console.log .

Ответ №2:

Недавно у меня была такая же проблема. Вы должны использовать свойство format для столбца и редактора:

  {
        xtype: 'datecolumn',
        header: 'Hora',
        dataIndex: 'time',
        format: 'H:i',
        editor: {
            xtype: 'timefield',
            format: 'H:i'
        }
    }  

Это работает для меня.

Ответ №3:

: тип ‘string’ Удаляет свойство из определения поля модели

 fields: [{ name: 'InTime',  }] // don't specify type
  

И это работает

 renderer: function (value) {
                return Ext.isDate(value) ? Ext.Date.format(value, 'H:i') : value;
            }