Отображение сериализованной даты JSON в сетке ext js - PullRequest
1 голос
/ 08 июля 2011

Сервер возвращает дату в формате JSON, как показано ниже,

{
    "LastUpdated": "\/Date(1310117748850)\/"
}

Я использую сетку ExtJs, а дата не отображается. Как я могу отобразить его в формате M / dd / yyyy?

this.store = new Ext.data.JsonStore({
    autoLoad: {
        params: {
            start: 0,
            limit: 10
        }
    },
    autoDestroy: true,
    url: '/home/jobs',
    idProperty: 'Name',
    fields: ['Name',
             'Description',
             'Type',
             'Group',
             'Data',
             'Schedule.Name',
             'Schedule.Description', {
                 name: 'LastUpdated',
                 type: 'date'
             },
             'Schedule.Expression',
             'Status'],
    root: 'data',
    sortInfo: {
        field: 'Name',
        direction: 'ASC'
    }
});   

В Grid colModel:

{
    header: 'Last Updated',
    dataIndex: 'LastUpdated',
    width: 80,
    renderer: Ext.util.Format.dateRenderer('m/d/Y')
},

Ответы [ 5 ]

0 голосов
/ 02 октября 2013

Единственное, что вам нужно сделать, это иметь следующее в вашей модели

{name: 'LastUpdated', тип: Ext.data.Types.DATE, dateFormat: 'time'}

Он сообщает ExtJS, что данные, поступающие в модель для этого поля, имеют время эпохи формы.

0 голосов
/ 11 июля 2012

Используйте

return new Date(parseInt(v.replace('/Date(', '')));

полный пример ниже,

columns: [                    
    {
        header: 'Last Updated',
        dataIndex: 'LastUpdated',
        renderer: Ext.util.Format.dateRenderer('m/d/Y')
    }
]

//store:
{
    field:'LastUpdated',
    type:'date',
    convert:function(v, j) {
        return new Date(parseInt(v.replace('/Date(', '')));
    }
}
0 голосов
/ 10 июля 2011
//Grid:
columns: [                    
    {header: 'Last Updated', dataIndex: 'LastUpdated', renderer: Ext.util.Format.dateRenderer('m/d/Y')}                        
]

//store:
{
  field:'LastUpdated',
  type:'date',
  convert:function(v,j){
     return new Date(v.replace(/\/Date((\d+))\//, '$1'));
  }
}
0 голосов
/ 11 июля 2011

Для поля даты также необходимо указать dateFormat.Например:

{name: 'LastUpdated', type: 'date', dateFormat: 'Y-m-d'}

Но в вашем случае вы получаете дату в другом формате ...

0 голосов
/ 08 июля 2011

В разделе столбца вы можете создать свой собственный обработчик даты:

columns: [                    
    {header: 'Last Updated', dataIndex: 'LastUpdated', renderer: dateRenderer}                        
]

И затем создать функцию, которая обрабатывает вашу дату:

function dateRenderer(value, id, r) {
    var yourDate = r.data['uploadDate'];

    // some js stuff here to strip out just the epoch time

    var datevar = new Date(yourDateEpoch);
    return Ext.Date.format(datevar, 'm/d/Y')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...