在ext js网格中显示JSON序列化日期

时间:2011-07-08 09:43:56

标签: extjs

服务器以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 :(得分:0)

在列部分中,您可以创建自己的自定义日期渲染器:

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')
}

答案 1 :(得分:0)

//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'));
  }
}

答案 2 :(得分:0)

对于日期字段,您还需要指定dateFormat。 E.g:

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

但在您的情况下,您会收到其他格式的日期......

答案 3 :(得分:0)

使用

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(', '')));
    }
}

答案 4 :(得分:0)

您唯一需要做的就是在模型中使用以下内容

{name:'LastUpdated',type:Ext.data.Types.DATE,dateFormat:'time'}

它告诉ExtJS,进入该字段模型的数据具有纪元时间。